uzyskać następujące ostrzeżenie:Najdziwniejsze w funkcji eval Perl
"(.) Wykorzystanie wartości niezainicjowanych w konkatenacji lub ciąg w C: \ Tools \ test.pl linia 17, linia danych 1."
Ale następna linia __DATA__
będą przetwarzane bez żadnego ostrzeżenia i dostać te:
test1b.txt: test test1c.txt: test: test
bardziej dziwne jest to, że po dodaniu linii: print "$line:".$'."\n";
Ostrzeżenie znikło.
Ktoś ma jakieś wskazówki?
#!/usr/bin/perl -w
use strict;
my $pattern='test';
my $output='$&';
while(<DATA>)
{
chomp;
my $line=$_;
chomp($line);
$line=~/$pattern/;
#print "$line:".$&."\n"; #why uncommenting this line make the following line pass without no warning.
my $result="$line:".eval($output)."\n";
print $result;
}
__DATA__
test1a.txt
test1b.txt
test1c.txt
Dobra uwaga! Rzadko używam "eval". Niektóre linki podają więcej informacji na temat jego użycia, takich jak http://stackoverflow.com/questions/10909127/perl-why-doesnt-eval-set-1. – user2462304