為什么下面會出現以下輸出?$a1已被定義...
package A1。
使用 Hash::Merge。
use Data::Dumper;
sub new
{
my $class = shift;
{
length => 2,
};
return bless $self, $class;
}
1;
my $a1 = A1->new();
print("a1 = " . ref($a1)。"
")。)
my %a = {'1' => $a1};
my $a3 = %a。
print( Dumper($a3))。
輸出:
a1 = A1
$VAR1 = {
'HASH(0x247c568)' => undef[/span
};
我希望這個值是'A1(0x...)',而不是未定義...
uj5u.com熱心網友回復:
大括號引入了一個哈希參考,但是%a是一個哈希,而不是一個參考。因此,參考被字串化并被用作鍵,而沒有任何東西可以用作值,所以它仍然沒有被定義。
嘗試一下
my %a = (1 => $a1);
代替。
你也可以不通過%a直接創建參考:
my $a3 = {'1'/span> => $a1};
你應該總是使用警告;。Perl會告訴你
在......的偶數大小的串列中發現了參考資訊
。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/311339.html
標籤:
上一篇:0加一個指標是什么意思?
下一篇:Perlprintf的換行
