sub invalid_line { my ($line) = @_; ... return 1 if $invalid; } my @files; # todo, get list of files for my $file (@files) { open FILE '<', $file; if (scalar grep { invalid_line($_) } grep { $_ =~ /^$keyword/ } ){ # file is invalid } else { # file is valid } close FILE; }