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$index2つの異なる変数と見なされます。

これは、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。ハッシュ(または連想配列)は1つ以上のペアで構成され、各ペアはキーと値で構成されます。キーは値にアクセスするために使用されます。

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ずつインクリメントして、同じキーに再割り当てします。

perldoc perlintroPerlの変数型の簡単な紹介、およびperldoc perldscより複雑なデータ構造については、を参照してください。

于 2011-11-14T19:35:18.960 に答える
2

perldataが役立つ場合があります。

于 2011-11-14T19:34:54.467 に答える