sub grep_file { my ($rx, $file) = @_; my @match; local $_; open my $fh, '<', $file or die "$!"; my $rx = qr/^$rx\|/ m/$rx/ && push @match, $_ while <$fh>; @match; }; my @match = grep_file($ARGV[0], $file);