use strict; use warnings; my $in = '1/2,1/3-5,1/12,1/40'; my @munged = map { my ( $slot, $portstr ) = split( '/', $_ ); my @ports = ( $portstr =~ m/(\d+)-(\d+)/ ) ? $1 .. $2 : $portstr; map { join( '/', $slot, $_ ) } @ports; } split( ',', $in ); print "$_\n" for @munged;