2012-06-17 9 views
6

perl question about ref。

$ref = [11, 22, 33, 44]; 
print "$$ref[0]" . "\n"; 
print "@$ref[0]" . "\n"; 

私はperl -dを実行します。

DB<1> p @$ref 
11223344 
DB<2> p $ref 
ARRAY(0x9dbf480) 
DB<3> p \$$ref[0] 
SCALAR(0x9dbf470) 
DB<4> p \@$ref[0] 
SCALAR(0x9dbf470) 

$$ ref [0]は、ARRAY(0x9dbf480)の最初のスカラーを表します。

@ $ ref [0]はどういう意味ですか?私は理解できない。

+5

['perlol'](http://perldoc.perl.org/perllol.html)と[' perldsc'](http://perldoc.perl.org/perldsc.html)で読むことを検討してください。このことを説明すると、彼らはかなり良い仕事をします。 –

+1

バックスラッシュが参照演算子で、\ $$ ref [0]と\ @ $ ref [0]を呼び出しているときに、逆参照してから再度参照を求めている場合は、そうするつもりはありません。 –

答えて

10

$ref = [11, 22, 33, 44];は、無名配列への参照です。

$$ref[0]または${$ref}[0]または$ref->[0]は、配列を逆参照して最初の要素を取得しています。

@$ref[0]または@{$ref}[0]は、配列を逆参照していて、最初の要素のみを含む配列スライスを取得しています。

4

まず、@$ref[0]は、\@$ref[0]とは異なります。前者はデバッグセッションにあり、後者はスクリプトにあります。

とにかく、@$ref[0]は、@{$ref}[0]と同じことを意味します。配列が@refの場合、@ref[0]は同等です。スライス表記を使用して配列の最初の要素を取得しています。

@array[$x]$array[$x]の違いは、最初のインデックスで複数のインデックスを指定して、1つではなく配列から要素のコレクションを取得できることです。しかし、ブラケットの間に1つのインデックスだけを置くと、同じ結果が得られます。

関連する問題