雜湊 %ENV
包含您目前的環境。在 ENV
中設定值會變更您隨後 fork()
的任何子程序的環境。
從 v5.18.0 開始,儲存在 %ENV
中的鍵和值都會字串化。
my $foo = 1;
$ENV{'bar'} = \$foo;
if( ref $ENV{'bar'} ) {
say "Pre 5.18.0 Behaviour";
} else {
say "Post 5.18.0 Behaviour";
}
之前,只有子程序會收到字串化的值
my $foo = 1;
$ENV{'bar'} = \$foo;
# Always printed 'non ref'
system($^X, '-e',
q/print ( ref $ENV{'bar'} ? 'ref' : 'non ref' ) /);
這是因為您無法與外部程序分享任意資料結構。