私は次のコードを持っています:
my $hhref = {'ancient' => {'Adam' => 'Eve',
'Antony' => 'Cleopatra'},
'modern' => {'Clyde' => 'Bonnie'}};
print "$hhref->{'ancient'}{'Antony'}\n";
どちらが印刷されますか:
REF(0x35c320)Cleopatra
そして、私は本当にその理由を理解していません。なぜ印刷しないのCleopatra
ですか?
perlのバージョンと使用しているOSに応じて、わずかに異なる結果が得られます。問題は、実際には、印刷ステートメントに引用符が含まれていることに起因します。代わりにあなたのコードが
my $hhref = {'ancient' => {'Adam' => 'Eve',
'Antony' => 'Cleopatra'},
'modern' => {'Clyde' => 'Bonnie'}};
print $hhref->{'ancient'}{'Antony'};
print "\n";
その後、正しく印刷されます。どうして?ええと、perlはあなたが何を意味するのか理解するのに苦労しています。「$ hhref」の後に「-> {'ancient'} {'Antony'}」が続くことを意味しますか、それとも「$ hhref-> {'ancient'}」の後に「{'ancient'}」が続くことを意味しますか。それはすべて1つの変数として一緒ですか?文字列の外側ではコンパイラは正確ですが、文字列の内側では、空白の使用方法が異なり、コードのように決定論的に使用されないため、意味を推測する必要があります。
基本的に、変数を毎回正しく解釈したい場合は、perlの引用符の外でそれらを参照してください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加