配列のデリファレンス構文?

配列やハッシュの要素へのアクセス方法は、大きく分けて3通りがあります。

  • インデックスでのアクセス
  • スライスでのアクセス
  • デリファレンス?でのアクセス(この方法、調べてもわかりませんでした。しかし、アクセス出来ることは確かです。)

※3番の方法を詳しく知っている方、よろしければ、ご教示お願い致します。

一次元

@a = (10, 20, 30);
# 以下は、すべて「10」と表示される
print $a[0], "\n";    # インデックスで@aの0番目要素をアクセス
print @a[0], "\n";    # スライスで@aの0番目要素をアクセス
print @a->[0], "\n";  # デリファレンス?で@aの0番目要素をアクセス?
配列&ハッシュのアクセス方法いろいろ - 燈明日記

別にまったく詳しくは無いんですが、3番目の例が摩訶不思議で気になったので実行してみました。

すると

Using an array as a reference is deprecated

という警告文が。

なんじゃろなと思ってPerlの診断メッセージで見てみると

Using an array as a reference is deprecated

(D deprecated) @foo->[23] や @$ref->[99] の形で、配列をリファレンスとして使おうとしました。 5.6.1 以前のバージョンの perl ではこの構文を許していましたが、そうするべきではありません。これは今では非推奨であり、将来のバージョンでは削除されるでしょう。

とのこと。

とりあえず、元記事の人はまず「use strict」と「use warnings」をちゃんと入れるようにして警告が出るかどうかを検証し、警告が出たならそれがどういう警告なのかを調べることで大体のことはわかるかと思うよ。