use strict; use warnings; my $buf_size = 16_384; open(my $big, shift) or die; open(my $small, shift) or die; my $search_string; { local $/; $search_string = <$small>; } my $buffer = ""; my $pos = 0; while(sysread($big, $buffer, $buf_size, length($buffer) ) ) { if ( (my $index = index($buffer, $search_string)) != -1) { print "FOUND! found the search string at position ", $pos + $index; exit; } $buffer = substr($buffer, int(length($buffer)/2)); $pos += length($buffer); } print "search string not found";