my $com = sub { }; if ($fil ne '') { if ($fmode eq '-') { $com = sub { next if ( m/$fil/ ); }; } elsif ($fmode eq '+') { $com = sub { next if ( !m/$fil/ ); }; } } while ($whatever) { $com->(); }