32

このよう=>に、演算子のハッシュの使用について知っています

$ cat array.pl
%ages = ('Martin' => 28,
         'Sharon' => 35,
         'Rikke' => 29,);

print "Rikke is $ages{Rikke} years old\n";
$ perl array.pl
Rikke is 29 years old
$

ハッシュを初期化するのは単なる構文だと思っていましたが、How can I qualify a variable as const/final in Perl?への回答で =>このように使用されています

use Readonly;
Readonly my $infilename => "input_56_12.txt";

とは=>どういう意味ですか? =>他に使用できる方法はありますか?

4

2 に答える 2

43

perlの=>演算子は基本的にコンマと同じです。唯一の違いは、左側に引用されていない単語がある場合、引用された単語のように扱われることです。Martin => 28したがって、 which は と同じであると書くことができます'Martin', 28

偶数長のリストからハッシュを作成できます。これは、例で行っているすべてです。

Readonly の例では、括弧を省略して、サブルーチン引数で Perl の柔軟性を利用しています。と同等Readonly(my $infilename, "input_56_12.txt")です。Readonly は、参照と値の 2 つの引数を取る Readonly モジュールによってエクスポートされる関数です。Readonly の内部を理解したい場合は、別の質問に値します。

予期しない方法でコンマとして使用する例を次に示します。

$ perl -e 'print hello => "world\n"'
helloworld
于 2010-11-04T04:33:06.467 に答える
37

perlopから:

演算子は=>コンマと同義ですが、左側のオペランドが文字またはアンダースコアで始まり、文字、数字、およびアンダースコアのみで構成されている場合、左オペランドが文字列として解釈される点が異なります。

これには、そうでなければ演算子、定数、単一の数値 v-string、または関数呼び出しとして解釈される可能性のあるオペランドが含まれます。この動作について疑問がある場合は、左側のオペランドを明示的に引用できます。

それ以外の場合、=> 演算子は、コンテキストに応じて、コンマ演算子またはリスト引数セパレーターとまったく同じように動作します。

例えば:

use constant FOO => "something";
my %h = ( FOO => 23 );

次と同等です。

my %h = ("FOO", 23);

そうではない:

my %h = ("something", 23);

=>演算子は、ハッシュ内のキーと値の間の対応、およびリスト内の他の対になった要素を文書化するのに役立ちます。

%hash = ( $key => $value );
login( $username => $password );

PBPから:

Perl Best PracticesからFat Commas に関するいくつかの良い情報を見つけまし=>た。ここでも言及するのは良いことだと思います。

ファット コンマは、次の場合にのみ使用することをお勧めします:-

ハッシュを構築するときに使用します。

my %h = ( FOO => 23 );

または名前付き引数をサブルーチンに渡すとき、つまり、

$text = format_text({FOO => 23, BAR => 30});

または定数を作成するとき:

 Readonly my $FOO => "23";

詳細については、Perl のベスト プラクティスの Chapter4:値と式 (ファット コンマ) セクションを参照してください。

于 2010-11-04T04:40:51.100 に答える