我在一段代码中看到了这一点:
if (some_condition) {
$index++;
}
$index{$some_variable} = $index{$some_variable} + 1;
是什么$index{$some_variable}
意思?为什么要使用它?
谢谢你。
编辑:索引定义为$index=0;
如果此代码编写正确,您将在其上方有以下几行:
use strict;
use warnings;
my $index;
my %index;
if (some_condition) {
$index++;
}
$index{$some_variable} = $index{$some_variable} + 1;
$index{$some_variable}
指的是散列和$index
标量。在 perl 中,这是完全有效的,%index
并且$index
将被视为两个不同的变量。
这也是为什么使用 strict 如此重要的一个原因。为什么要使用严格和警告?
%index
它使用值是值的键检索哈希中的条目$some_variable
(注意:也可能存在一个标量命名$index
,但它会占用一个单独的命名空间。也就是说,您可以同时命名一个哈希和一个标量index
,它们不会冲突。)
Perl 有几个命名空间
$var
是一个标量变量@var
是一个数组变量,并且$var[$i]
是该数组的一个元素。%var
是一个散列变量,并且$var{$i}
是该散列的一个元素。语句中$index
的是一个标量。它与它后面的语句$index++;
无关。$index{$some_variable}
$index{$some_variable}
是哈希的一部分,%index
. 哈希(或关联数组)由一对或多对组成,每对由一个键和一个值组成。键用于访问值。:
my %hash = ( key_A => value_A, # Here $hash{key_A} accesses 'value_A'
key_B => value_B, # ... $hash{key_B} gives 'value_B'
key_Z => value_Z ); # 'value_Z' returned by $hash{key_Z}
分析$index{$some_variable} = $index{$some_variable} + 1;
, 的值$index{$some_variable}
被访问,加一并重新分配给同一个键。
有关perldoc perlintro
Perl 中变量类型的简要介绍,以及perldoc perldsc
更复杂的数据结构,请参阅 参考资料。
您可能会发现perldata很有帮助。