>Уберите из результатов работы вашего примера строки длиннее 5 символов. поправьте строку:
for $l (<F>) { for (@ARGV) { print $l and last if ($l =~ $_) } };
так:
for $l (<F>) { for (@ARGV) { print $l and last if (($l =~ $_) && (length $l < 5)) } };
у меня разница еще меньше и равно 10%:
# time ./test.py multi.txt Linux FreeBSD Solaris Cisco Opennet Bash pronounced Compilation Robbins Gentoo Portability SPARC OpenBSD Hurd OpenSolaris Linux FreeBSD Solaris Cisco Opennet Bash pronounced Compilation Robbins Gentoo Portability SPARC OpenBSD Hurd OpenSolaris Linux FreeBSD Solaris Cisco Opennet Bash pronounced Compilation Robbins Gentoo Portability SPARC OpenBSD Hurd OpenSolaris Linux FreeBSD Solaris Cisco Opennet Bash pronounced Compilation Robbins Gentoo Portability SPARC OpenBSD Hurd OpenSolaris > /dev/null
20.745u 0.007s 0:20.75 99.9% 1288+1224k 0+0io 0pf+0w
# time ./test.pl multi.txt Linux FreeBSD Solaris Cisco Opennet Bash pronounced Compilation Robbins Gentoo Portability SPARC OpenBSD Hurd OpenSolaris Linux FreeBSD Solaris Cisco Opennet Bash pronounced Compilation Robbins Gentoo Portability SPARC OpenBSD Hurd OpenSolaris Linux FreeBSD Solaris Cisco Opennet Bash pronounced Compilation Robbins Gentoo Portability SPARC OpenBSD Hurd OpenSolaris Linux FreeBSD Solaris Cisco Opennet Bash pronounced Compilation Robbins Gentoo Portability SPARC OpenBSD Hurd OpenSolaris > /dev/null
22.703u 0.007s 0:22.71 99.9% 5+28755k 0+0io 0pf+0w