perl - 有一个 perl 散列是什么意思{}{}

标签 perl hash

我的教授在幻灯片上有一些我不理解的语法。

在 perl 中有:

$hash{$string}{$anotherString}++;

这个语法是什么意思?如果是:

$hash{$string}{$int}++;

会增加值(value)吗? 当我打印时使用

while( my( $key, $value ) = each %hash ){print "$key: $value\n";}

我的输出是 “ key ”:哈希(0xbe0200)

最佳答案

那是一个二维哈希,一个哈希的哈希。一旦您意识到任何单个值实际上都是标量,就很容易在 Perl 中跟踪结构。在多维结构的情况下,标量值是一个引用。例如:

my %outer = ( "foo" => { "bar" => 1 } );

内部 { "bar"=> 1 } 是哈希引用。在赋值中使用 { } 表示匿名散列。这类似于:

my %inner = ( "bar" => 1 );
my %outer = ( "foo" => \%inner );

现在当你想引用 %inner 中的值时,你使用第一个键访问哈希引用,第二个键访问 %inner 中的值>:

print $outer{"foo"}{"bar"};  # prints 1

当你使用 increment operator ++在一个值上,它是递增的:

$outer{"foo"}{"bar"}++;      # the value is now 2

关于perl - 有一个 perl 散列是什么意思{}{},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28517196/

相关文章:

python - 从 mysql 行插入启动进程

perl - print<< perl 中的 EOF- 打印 $

python - 类自定义 __eq__ 作为哈希值的比较

ruby - 转换这种数据结构哈希的巧妙方法?

arrays - Ruby(Chef) - 将散列转换为数组

perl - Test::DBIx::Class 的 schema.conf 是什么样的?

regex - 用于捕获最后一次出现的模式的正则表达式

perl - 如何在 Perl 中使用可重复的随机化?

database - 将频谱图存储为可以比较的数据结构的最佳方法是什么?

ruby - 为什么 Array * 在 Ruby 中引用而不是复制值?