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

I don't really understand your requirements, but maybe this slightly different approach will help:
use strict; use warnings; my $s = ' A ||118|AVIANN GILDED WILD HONEY. HM 75081701. 02-04-97'; if ($s =~ / ^ .* [|] (.*) [.] ([^.]+) [.] ([^.]+) $ /x) { my $name = $1; my $num = $2; my $date = $3; print "Name = $name\n"; print "Num = $num\n"; print "Date = $date\n"; } __END__ Name = AVIANN GILDED WILD HONEY Num = HM 75081701 Date = 02-04-97

Can you show a few more lines of your actual input?

Update: The above now accounts for a period in the name. Here is my original code:

if ($s =~ / .* [|] ([^.]+) [.] ([^.]+) [.] (.*) /x) {