ด้วยperl:
if perl -0777 -e '$n = <>; $h = <>; exit(index($h,$n)<0)' needle.txt haystack.txt
then echo needle.txt is found in haystack.txt
fi
-0octalกำหนดตัวคั่นระเบียน เมื่อตัวเลขฐานแปดเป็นจำนวนมากกว่า 0377 (ค่าไบต์สูงสุด) $/ = undefนั่นหมายความว่าไม่มีตัวคั่นก็เทียบเท่ากับการทำ ในกรณีที่<>ส่งกลับเนื้อหาเต็มรูปแบบของไฟล์เดียวนั่นคือโหมด Slurp
เมื่อเรามีเนื้อหาของไฟล์ในสอง$hและ$nตัวแปรเราสามารถใช้index()เพื่อตรวจสอบว่ามีคนพบในอื่น ๆ
ซึ่งหมายความว่าอย่างไรก็ตามไฟล์ทั้งหมดจะถูกเก็บไว้ในหน่วยความจำซึ่งหมายความว่าวิธีนี้จะไม่ทำงานสำหรับไฟล์ที่มีขนาดใหญ่มาก
สำหรับไฟล์ mmappable (โดยปกติจะมีไฟล์ปกติและไฟล์ที่ค้นหาได้มากที่สุดเช่นอุปกรณ์บล็อก) ซึ่งสามารถใช้งานได้โดยใช้mmap()ไฟล์เช่นเดียวกับSys::Mmapโมดูล perl:
if
perl -MSys::Mmap -le '
open N, "<", $ARGV[0] || die "$ARGV[0]: $!";
open H, "<", $ARGV[1] || die "$ARGV[1]: $!";
mmap($n, 0, PROT_READ, MAP_SHARED, N);
mmap($h, 0, PROT_READ, MAP_SHARED, H);
exit (index($h, $n) < 0)' needle.txt haystack.txt
then
echo needle.txt is found in haystack.txt
fi