1

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

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

任何帮助,将不胜感激。

4

1 回答 1

4

现在大多数人会写 $area->{acc} 而不是 $$area{acc}。

例子:

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

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

于 2015-01-02T22:18:37.987 回答