in reply to Efficent Text Checking

I guess that you are loading large amounts of file contents into memory, which takes some time.

But since you have only one lookup, you don't have to store the values - you could compare them on the fly:

for my $filename (@repos){ if ($input eq read_file($filename)){ print "File $filename matches\n"; exit; } } print "No match";

If the files are rather large you can optimize the process further my just reading the first $N bytes (let's say 512) and compare them, and only if these first bytes are identical read all of the file.

Or you could just dump the files into a database and let the database build an index, then all you have to do is query the database. If your repo doesn't change too frequently that's probably the fastest solution.