小池啓仁 ヒロヒト応援ブログ By はてな

小池啓仁(コイケヒロヒト)の動画など。

小池啓仁 ヒロヒト応援ブログ By はてな

Perlでの矢印演算子『->』の省略について

すぐわかる オブジェクト指向 Perl
矢印演算子『->』は、リファレンスをデリファレンスする場合に使用します。
たとえば、スカラー変数 $x に無名配列のリファレンスが代入されているとします。
そのとき、無名配列の0番目の要素を表示するには、以下のようになります。

my $x = [1,2,3];
print ${$x}[0], "\n"; # 0番目の要素を表示
print $x->[0], "\n";  # 0番目の要素を表示

また、配列変数 @y の要素に無名配列のリファレンスが代入されているとします。
そのとき、無名配列の0番目の要素を表示するには、以下のようになります。

my @y = ([1,2,3]);
print ${$y[0]}[0], "\n";# 0番目の要素を表示
print $y[0]->[0], "\n"; # 0番目の要素を表示
print $y[0][0], "\n";   # 0番目の要素を表示

実は、上記や下記サンプルのように大括弧(ブラケット)や中括弧(ブレース)の間にはさまれた矢印は省略可能なのです。
また、閉じブラケットまたは閉じブレースと、間接サブルーチン呼び出しの小括弧(パーレン)の間も矢印が省略可能です。

・サンプル1(以下の2つは等価)

$aaa[$i]->{$index}->[$j]
$aaa[$i]{$index}[$j]

・サンプル2(以下の2つは等価)

$subx[3]->(1,2,3);
$subx[3](1,2,3);