perl -Mstrict -Mwarnings -le 'my $str = q{a:1}; my %f; $str =~ m/([a-z]):(\d+)(?:-(\d))?/; my ( $k, $starting, $ending ) = ( $1, $2, defined $3 ? $3 : $2 ); print $k; print $starting; print $ending;'