3

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

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

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

谢谢你。

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

4

5 回答 5

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 如此重要的一个原因。为什么要使用严格和警告?

于 2011-11-14T19:31:50.737 回答
9

%index它使用值是值的键检索哈希中的条目$some_variable

(注意:也可能存在一个标量命名$index,但它会占用一个单独的命名空间。也就是说,您可以同时命名一个哈希和一个标量index,它们不会冲突。)

于 2011-11-14T19:26:27.530 回答
6

Perl 有几个命名空间

  • $var是一个标量变量
  • @var是一个数组变量,并且$var[$i]是该数组的一个元素。
  • %var是一个散列变量,并且$var{$i}是该散列的一个元素。
于 2011-11-14T19:31:02.347 回答
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}被访问,加一并重新分配给同一个键。

有关perldoc perlintroPerl 中变量类型的简要介绍,以及perldoc perldsc更复杂的数据结构,请参阅 参考资料。

于 2011-11-14T19:35:18.960 回答
2

您可能会发现perldata很有帮助。

于 2011-11-14T19:34:54.467 回答