私はこれをコードの一部で見ました:
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
2つの異なる変数と見なされます。
これは、strictを使用することが非常に重要である理由でもあります。なぜ厳格な警告を使用するのですか?
%index
値がの値であるキーを使用してハッシュ内のエントリを取得しています$some_variable
(注:という名前のスカラーが存在する場合もあります$index
が、それは別の名前空間を占有します。つまり、ハッシュと名前付きのスカラーの両方を持つことができindex
、それらは競合しません。)
Perlにはいくつかの名前空間があります
$var
スカラー変数です@var
は配列変数であり$var[$i]
、その配列の要素です。%var
はハッシュ変数であり$var{$i}
、そのハッシュの要素です。ステートメント$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 perlintro
Perlの変数型の簡単な紹介、およびperldoc perldsc
より複雑なデータ構造については、を参照してください。
perldataが役立つ場合があります。