perl 脚本中的多个 {}

mutiple {} in perl script

我在 perl 脚本中有这个语法,但我不知道它是什么意思: $string.= "$$info{$id}{free}\t";.

我对 pearl 很陌生(第一次阅读 perl 脚本),我没有找到任何有用的信息。

$info 是哈希引用。这是指多级数据结构,第一级键由另一个变量$id设置。您的结构可能如下所示:


my $info = {
  1 => { 
    free => 2,
    used => 3,
  },
  2 => {
    free => 1,
    used => 0,
  },
};

本例中的 $id 将是 12

您可以在 perlreftut 中阅读更多详细信息。

您的代码从数据结构内部获取值并将其附加到变量 $string 后跟一个制表符。它看起来像是在构建一个制表符分隔的文件,类似于 CSV 文件。

根据$$info{ $id }也可以写成$info->{ $id }。 (我不是唯一发现后者更清楚的人。)

$info->{ $id }{ free }

的缩写
$info->{ $id }->{ "free" }

这只是将两个散列元素取消引用链接到一个表达式中:

my $anon = $info->{ $id };  $anon->{ "free" }

HASHREF->{ KEY } 用于在给定散列引用和元素键的情况下获取散列元素的值。

这意味着 $info 应该是对哈希的引用。 $info->{ $id }获取key值为$id的元素的值。

类似地,$info->{ $id }/$anon 应该是对哈希的引用。 $anon->{ "free" } 获取键为 free 的元素的值。

例如,

my $info = {
   machine01 => { 
      free => 100,
      used => 200,
   },
   machine02 => {
      free =>  50,
      used => 450,
   },
};

my $id = "machine01";

say $info->{ $id }{ free };  # 100

perlreftut