我理解$$是一种取消引用变量的方法,但在这个例子中,我无法确定它的用途:
opendir (CUST, "D:/opt/customer");
foreach $area (grep /^\d\d\d\d$/, readdir CUST) {
push @areas, $area;
$$area{acc} = shift ;
open (AREA_DISP, "<D:/opt/customer/$area/displays/dir.mnu");
while (<AREA_DISP>) {
$$area{dir} = $$area{dir} . $_;
}
close (AREA_DISP);
}
closedir (CUST);
使用它的唯一其他地方是代码中的下方:
foreach $area (@areas) {s/.+( $area)/"$$area{acc} $1/;}
任何帮助都将不胜感激。
答案 0 :(得分:4)
如今,大多数人会写$ area-&gt; {acc}而不是$$ area {acc}。
示例:
$ perl -E '$area={ acc=>"some" }; say $$area{acc}; say $area->{acc}'
some
some
$
如果我是你,我会改写那个剧本,因为它似乎使用旧的习语,并以一种相当可疑的方式重用变量。