【问题标题】:Perl - double dollar sign: what function does it perform?Perl - 双美元符号:它执行什么功能?
【发布时间】:2015-03-01 04:43:21
【问题描述】:

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

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

任何帮助将不胜感激。

【问题讨论】:

    标签: perl dereference dollar-sign


    【解决方案1】:

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

    例子:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-20
      • 2023-03-03
      • 2010-11-30
      • 1970-01-01
      • 2014-12-21
      • 1970-01-01
      相关资源
      最近更新 更多