Perl - 双美元符号:它执行什么功能?

时间:2015-01-02 22:02:47

标签: perl dereference dollar-sign

我理解$$是一种取消引用变量的方法,但在这个例子中,我无法确定它的用途:

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/;}

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:4)

如今,大多数人会写$ area-&gt; {acc}而不是$$ area {acc}。

示例:

$ perl -E '$area={ acc=>"some" }; say $$area{acc}; say $area->{acc}'
some
some
$

如果我是你,我会改写那个剧本,因为它似乎使用旧的习语,并以一种相当可疑的方式重用变量。