my $reg1 = 1; my $reg2 = 0; ... my @regex; push(@regex,[qr/^unleserliches\s+Konstrukt/,sub{ ... }]) if ($reg1); push(@regex,[qr/xyz/,sub{ ... }]) if ($reg2); ... while (my $line=<$dat>){ $line=~$_->[0] && $_->[1]->($line,...) for(@regex); }