当我想将哈希值推送到数组时,我使用{}
代替()
,因为如果我不这样做就会给我错误。我何时使用{}?
@stem = ();
for($i=0;$i<2;++$i){
push @stem,{u1=>1 , u2 => 2 , u3 => 3};}
@ants = ();
$count = 0;
for($i=0;$i<scalar(@stem);++$i){
@allowed = ();
%hash = ();
for($j=0;$j<scalar(@stem);++$j){
push @allowed,{stem=>++$count,hinfo=>++$count};
}
%hash = ( allowed=>\@allowed ,solution=>++$count);
push (@ants,\%hash);
}
for($i=0;$i<scalar(@ants);++$i){
%test = %{$ants[$i]};
print "=>",$test{solution},"\n";
@temp = @{$test{allowed}};
for($j=0;$j<scalar(@temp);++$j)
{print $j,":",$temp[$j]->{stem}," ",$temp[$j]->{hinfo},"\n";}
}
输出:
=&GT; 21个
0:16 16
1:18 18
2:20 20
=&GT; 21个
0:16 16
1:18 18
2:20 20
答案 0 :(得分:0)
2)当我想将哈希推送到数组时,我使用
{}
而不是()
,因为如果我不这样做就会给我错误。我何时使用{}
?
我可以回答这个问题2.
当您使用()
perl看作元素列表时。当您使用{}
perl时,将其视为对哈希的引用。
所以当你这样做时:push @Arr, (x=>2, y=>5);
四个元素将被推送到@Arr
:x
,2
,y
,5
。这不是你的意图。
但是当你这样做时:push @Arr , {x => 2, y => 5};
对包含x
和y
作为键的匿名哈希的单一引用,2
和5
as相应的值将推送到@Arr
。