in reply to regexp identify variable number of digits within a sentence

Help is in perlrequick, perlretut, and perlre. This ought to cover the test cases you mentioned:
my @lines = ( " A \t\t118\tAVIANN GILDED WILD HONEY. HM 123456. 02-04-97 \n", " A \t\t118\tAVIANN-GILDED ... 'WILD' & HONEY. HP--09090901. 02-04 +-97 \n", ); for my $line (@lines) { my ($name, $reg, $dob) = ($line =~ / ^.+\t # ignore everything till the + last tab (.+?) # capture dog name \s+ ([[:alpha:]]{2} [-\s]{1,2} \d+)\.? # capture dog registration \s+ (\d{2}-\d{2}-\d{2}) # capture DOB \s*$ # anchor the end of regexp /x); print "Name : $name\n", "Reg : $reg\n", "DOB : $dob\n\n"; } __END__ Name : AVIANN GILDED WILD HONEY. Reg : HM 123456 DOB : 02-04-97 Name : AVIANN-GILDED ... 'WILD' & HONEY. Reg : HP--09090901 DOB : 02-04-97