#!/usr/bin/perl -w use strict; my @tests = ( 'A ||118|AVIANN GILDED WILD HONEY. HM 75081701. 02-04-97', 'A ||118|||AVIANN GILDED &^$WILD HONEY HP--09090901. 02-04-97', ); foreach my $test (@tests) { $test =~ s/^.*\|//; #remove beginning til last | #"fix" possible typo in the registration number # HP--09090901. becomes HP 09090901. $test =~ s/(\w+)[-]+([\d.]+\s+\S+)$/$1 $2/; my ($name,$number,$date) = $test =~ m/^(.*)\s+(\S+\s+\S+)\s+(\S+)$/; $number =~s/\.$//; #fix possible typo trailing '.' print "\n name=$name\n number=$number\n date=$date\n"; } __END__ name=AVIANN GILDED WILD HONEY. number=HM 75081701 date=02-04-97 name=AVIANN GILDED &^$WILD HONEY number=HP 09090901 date=02-04-97