Nie mogę ustalić, dlaczego wzorce regex nie pasują do siebie. Ponadto dane wyjściowe narzekają, że $found
nie został zainicjowany, ale uważam, że tak. Oto mój kod do tej pory:Ostrzeżenie dotyczące Perla: użycie niezainicjowanej wartości w konkatenacji (.) Lub ciągu
use strict;
use warnings;
my @strange_list = ('hungry_elephant', 'dancing_dinosaur');
my $regex_patterns = qr/
elephant$
^dancing
/x;
foreach my $item (@strange_list) {
my ($found) = $item =~ m/($regex_patterns)/i;
print "Found: $found\n";
}
tutaj jest wyjście uzyskać:
Use of uninitialized value $found in concatenation (.) or string at C:\scripts\perl\sandbox\regex.pl line 13.
Found:
Use of uninitialized value $found in concatenation (.) or string at C:\scripts\perl\sandbox\regex.pl line 13.
Found:
Czy muszę zainicjować $found
w inny sposób? Ponadto, czy poprawnie tworzony jest wieloliniowy ciąg do interpretowania jako regex?
Wielkie dzięki.
ciąg wielowierszowego jest interpretowane jako 'QR/słoń $^taniec /;' natomiast prawdopodobnie chcesz 'QR/słonia $ |^dancing /; ' – user1937198
Aby dopasować wiele wierszy, użyj przełącznika/m:' my $ regex_patterns = qr/elephant $^dancing/mx; ' – shawnhcorey