while ( ) { chomp; my ( $lhs, $rhs ) = split /\s+=>\s+/; my $ans = "$lhs => " . join ",", map { /(\d+)-(\d+)/ ? $1 .. $2 : $_ } split /,/; print "$ans\n" } __DATA__ a => 15-19,30,35,120 b => 15-17,30,35,40, c => 15-18,30,35,120 __END__ a => 15,16,17,18,19,30,35,120 b => 15,16,17,30,35,40 c => 15,16,17,18,30,35,120