Perlのリファレンスとアロー演算子について
Perlの勉強をしています.
リファレンスとアロー演算子について教えて下さい.
■質問
下記のうち,(4)がどのように評価されるか教えて下さい.
先頭のシャープはプロンプトです.
(1)
よくある配列要素の指定方法
# perl -e '@a = (0,1,2,3); print($a[1]);'
→1
(2)
あまりよろしくないが,スライスを使っても,print文では@a[1]がリストのコンテキストで評価されるので同じ結果にはなる
# perl -e '@a = (0,1,2,3); print(@a[1]);'
→1
(3)
よくあるリファレンス/デリファレンスの方法
# perl -e '$a = [0,1,2,3]; print($a->[1]);'
→1
(4)
下記が成り立つ意味が分からない
# perl -e '@a = (0,1,2,3); print(@a->[1]);'
→1
@aは配列であってリファレンスでは無いと思うのですが,配列にアロー演算子が使えてしまっていいんでしょうか?
Perl5のマニュアルによれば(http://www.namazu.org/~tsuchiya/perl/info/perl-ja_20.html),アロー演算子は「右側が [...] か {...} の形の添字であれば、左側は配列かハッシュへのハードリファレンスかシンボリックリファレンス」と書かれているので,左側が配列そのものであるときは,エラーになるのではないかと思うのですが...
分かる方,どなたかご教授いただければ幸いです.
■環境
# perl -v
This is perl, v5.10.1 (*) built for i686-cygwin-thread-multi-64int
(with 13 registered patches, see perl -V for more detail)
Copyright 1987-2009, Larry Wall
Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.
Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl". If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.