这在perl $ variable_one {$ variable_two}中意味着什么?它叫什么?

时间:2011-11-14 19:23:55

标签: perl scalar

我在一段代码中看到了这一点:

if (some_condition) {  
 $index++;  
}  
$index{$some_variable} = $index{$some_variable} + 1; 

$index{$some_variable}是什么意思?为什么要使用它?

谢谢。

编辑: index定义为$index=0;

5 个答案:

答案 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有帮助。