c:\@Work\Perl\monks>perl -wMstrict -le "for my $s ( qq{abcd\t723-724}, qq{abcde\t552-554-553}, qq{abcdef\t756}, qq{abcdef\tfoo}, ) { my $parsed = my ($base, $groups) = $s =~ m{ \A ([[:alpha:]]+) \t (\d+ (?: - \d+)*) \z }xms; ;; die qq{bad string '$s'} unless $parsed; ;; print qq{'$s' -> }; for my $g ($groups =~ /\d+/g) { print qq{ '$base' '$g'}; } } " 'abcd 723-724' -> 'abcd' '723' 'abcd' '724' 'abcde 552-554-553' -> 'abcde' '552' 'abcde' '554' 'abcde' '553' 'abcdef 756' -> 'abcdef' '756' bad string 'abcdef foo' at -e line 1.