Hi All

                I have following code set of code  which will have  a  
subroutine which has 2 parameters.  The first parameter (VALUES) is a reference 
to an array of non-sorted, hex strings.  The second parameter (RANGES) is a 
reference to an array that is empty.  The subroutine should fill the RANGES 
array with consecutive ranges built from the VALUES array.  The subroutine 
should return the number of ranges built .

Example:

@array = ("0A0", "005", "001", "004", "0BC", "004", "002", "001");

$numRanges = buildRanges(VALUES => \@array, REF_RANGES=>\@ranges);

The array @ranges should be filled as follows:

@ranges = ("001:002", "004:005", "0A0", "0BC"); ==> I am not getting all the 
values in the array . I am getting only ranges in array .

And $numRanges should be 2.

============================
#!/usr/bin/perl
use strict;

my @array = ("0A0", "005", "001", "0A1","004", "0BC",  "002" );
my @ranges = ();
my $numRanges = buildranges(VALUE => \@array , REF_RANGES=>\@ranges);

print "No of ranges exist in array : $numRanges .\n";

sub buildranges{
        my ($value , $ref_array , $range , $ref_range)= @_;
        my @array = @$ref_array;
        my @ranges = @$ref_range;
        my ($int1,$int2);
        for (my $i=0;$i < @array;$i++){
                my $int1 = hex($array[$i]);
                for (my $j=1;$j < @array; $j++){
                        $int2 = hex($array[$j]);
                        if ($int2 == ($int1 + 1)){
                                push(@ranges,"$array[$i]:$array[$j]");
                        }
                        elsif ($int2 == ($int1 - 1)){
                                push(@ranges,"$array[$j]:$array[$i]");
                        }
                        else {
                                next;
                        }

                }
        }
        my %hash_ranges = map {$_ => 1 } @ranges;
        @ranges = keys %hash_ranges;
        my $numRanges = \@ranges;
        return $numRanges;
}

=================================


What changes I should make in my program .

-Sunita

Reply via email to