#!/usr/bin/perl print "To get the range of numbers \n"; print "Enter the range to see expansion \n"; chomp($range=); print "The range from subroutine is :",join("==>",&get_numbers_from_ranges($range)),"\n"; sub get_numbers_from_ranges { my $spec = shift; my %numbers; foreach my $x ( split ',', $spec ) { $x =~ s/\s*//g; if ( $x =~ /(\d+)-(\d+)/ ) { $numbers{$_} = undef for $1 .. $2; } else { $numbers{$x} = undef; } } # subtracting every element by one because these are used in arrays i.e. 1st element in array index is 0 #return map { $_ - 1 } sort { $a <=> $b } keys %numbers; return map { $_ - 1 } keys %numbers; }