中聲明的未初始化的值任何人都可以向我解釋爲什麼在包中聲明的變量不能被eval函數訪問,除非它在sub中使用一次?
(perl的v5.16.3 MSWin32-64的多線程的ActiveState)perl eval使用包
套餐:
use strict;
use warnings;
package testPackage;
my $insertVar = "TEST";
sub testSub {
my $class = shift;
my $test = shift;
eval '$test="'.$test.'";';
return $test;
}
1;
計劃:
use strict ;
use warnings ;
use testPackage ;
my $testVar = q[insertVar = ${insertVar}] ;
$testVar = testPackage->testSub($testVar) ;
print "$testVar\n" ;
結果來執行程序時:
使用的未初始化值$ insertVar在串聯(。)或字符串中 at (eval 1)line 1. insertVar =
現在,如果我使用testSub中的變量(例如,打印出來):
use strict;
use warnings;
package testPackage;
my $insertVar = "TEST";
sub testSub {
my $class = shift;
my $test = shift;
print $insertVar . "\n";
eval '$test="'.$test.'";';
return $test;
}
1;
然後該程序運行完全一樣我打算:
TEST
insertVar = TEST在一個文件中聲明
爲什麼地球上你會''評估一個變量的賦值來設置自己? – TLP