Non riesco a capire perché i modelli di espressioni regolari non corrispondono. Inoltre, l'output si lamenta che lo $found
non è inizializzato, ma credo di averlo fatto. Ecco il mio codice finora:Avviso Perl: utilizzo del valore non inizializzato in concatenazione (.) O stringa
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";
}
Ecco l'uscita ottengo:
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:
Devo inizializzare $found
in altro modo? Inoltre, sto creando correttamente una stringa multi-linea da interpretare come regex?
Molte grazie.
la stringa multilinea viene interpretata come 'QR/elefante $^danza /;' che, probabilmente, si vuole 'QR/elefante $ |^ballare /; ' – user1937198
Per la corrispondenza multi-linea, usa l'opzione/m:' my $ regex_patterns = qr/elephant $^dancing/mx; ' – shawnhcorey