【发布时间】:2012-01-18 12:00:45
【问题描述】:
我对以下代码有疑问:
#!/usr/bin/perl
use strict;
use warnings;
my %dmax=("dad" => "aaa","asd" => "bbb");
my %dmin=("dad" => "ccc","asd" => "ddd");
&foreach_schleife(\%dmax,\%dmin);
sub foreach_schleife {
my $concat;
my $i=0;
foreach my $keys (sort keys %{$_[0]}) {
while ($_[$i]) {
$concat.="$_[$i]{$keys} ";
print $_[$i]{$keys}."\n";
$i++;
}
$i=0;
$concat="";
}
}
输出是:
bbb
ddd
aaa
ccc
我不明白这一点。 通常你必须取消对哈希、数组等的引用。 为什么不在这里?写够了:
$_[$i]{$keys}."\n";
不是这样的:
$$_[$i]{$keys}."\n";
为什么?
是不是跟变量@_/$_的特殊性有关?
【问题讨论】:
-
如果您对答案感到满意,请按旁边的空心绿色复选标记accept。它给你和你接受答案的人都带来了声誉,通常是一种很好的姿态。
标签: perl variables subroutine dereference