#!/usr/bin/perl use warnings; use strict; use Benchmark qw(:all); my @searched = qw( Eins Dies ); my @lines = ; cmpthese( 1_000_000, { 'index' => sub { by_index( \@searched, \@lines ) }, 'w_reg' => sub { by_walked_regex( \@searched, \@lines ) }, }); sub by_index { my @such = @{ $_[0] }; my @lin = @{ $_[1] }; line: while ( my $l = shift @lin ) { for( @such ) { next line unless index( $l, $_ ) + 1 } print STDERR "i $l"; } } sub by_walked_regex { my @such = @{ $_[0] }; my @lin = @{ $_[1] }; line: while ( my $l = shift @lin ) { for( @such ) { next line unless $l =~ /$_/ } print STDERR "wr $l"; } } Dies ist Zeile Eins, wird gefunden. Dies ist Zeile Zwei, wird nicht gefunden. Dies ist Zeile Drei, wird auch nicht gefunden.