use strict; use Time::HiRes 'time'; my (@dat) = (); my @filters; push @filters, sub { /blahdeblah/ ? 1 : undef } for 1..83; push @filters, sub { /active/ ? 1 : undef }; push @filters, sub { /anotherfilter/ ? 1 : undef }; my $file_name = 'test.txt'; open my $DATF, '<', $file_name; while( chomp(my $line = <$DATF>) ) { foreach my $filter (@filters) { my $newline = $filter->($line) or next; push (@dat, $line); last; } } close($DATF); print( time - $^T, "\n" );