Szczerze nie do końca pojmuję sens powyższego kodu, ale…
Jeśli masz jakiś plik i chcesz sprawdzić czy występuje w nim jakiś podciąg to po prostu wczytuj go linia po linii (podejrzewam, że wyszukiwany podciąg nie ma w sobie znaku nowej linii). Jeśli wczytana linia zawiera ten podciąg to przerywasz. Jeśli plik nie jest duży, a wyszukiwanie będzie wykonywane wielokrotnie być może warto wczytać cały plik do pamięci.
#!/usr/bin/perl
use strict;
use warnings;
my $szukany = "user3";
open PLIK, '<', 'data.txt' or die "Nie można otworzyć pliku: $!";
while () {
chomp;
if (index($_, $szukany) > -1) {
print "Odnaleziono |$_|\n";
last;
}
}
close PLIK;
Choć oczywiście może nie o to Ci chodzi. No i tak jak napisałem, jeśli plik będzie często przeszukiwany, a nie jest duży to być może warto go całego wczytać do pamięci. Jeszcze taka dygresja, obecnie w Perlu zaleca się raczej otwieranie plików do skalarów, tak więc:
#!/usr/bin/perl
use strict;
use warnings;
my $szukany = "user3";
open my $plik, '<', 'data.txt' or die "Nie można otworzyć pliku: $!";
while (<$plik>) {
chomp;
if (index($_, $szukany) > -1) {
print "Odnaleziono |$_|\n";
last;
}
}
close $plik;