我在一段代码中看到了这一点:
if (some_condition) {
$index++;
}
$index{$some_variable} = $index{$some_variable} + 1;
$index{$some_variable}
是什么意思?为什么要使用它?
谢谢。
编辑:
index定义为$index=0;
答案 0 :(得分:10)
如果正确编写了此代码,您将在其上方显示以下行:
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非常重要的原因。 Why use strict and warnings?
答案 1 :(得分:9)
它使用值为%index
$some_variable
哈希中的条目
(注意:可能还存在一个名为$index
的标量,但它会占用一个单独的命名空间。也就是说,你可以同时拥有一个名为index
的哈希和一个标量,它们不会发生冲突。 )
答案 2 :(得分:6)
Perl有几个名称空间
$var
是标量变量@var
是一个数组变量,$var[$i]
是该数组的元素。%var
是一个哈希变量,$var{$i}
是该哈希的元素。答案 3 :(得分:5)
$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}
的值,加1并重新分配给相同的密钥。
有关Perl中变量类型的简要介绍,请参阅perldoc perlintro
,有关更复杂的数据结构,请参阅perldoc perldsc
。
答案 4 :(得分:2)
您可能会发现perldata有帮助。