my $keep_going = 0; while (my $job_B = readdir DIR_B) { print "D\n"; # ||= here means "assign to $keep_going if $keep_going is false" $keep_going ||= $job_B =~ /Out_$tag\.txt$/; next unless $keep_going; ... }