型グロブ

Perlは、変数名などのシンボルが同じでも、頭の記号で、変数だったり、配列だったり、ハッシュだったりする。
型グロブは、このシンボルテーブルのエントリーを表現する。

型グロブを理解する - Perl入門ゼミ

*をつけて型グロブを取得できる。
型グロブに型グロブを代入すると、代入先に代入元の情報が引き継がれ、エイリアスとなる。

$ vi type_glob.pl
$ perl type_glob.pl
ABCDE
(1,2,3)
{value1,value2}
*main::type_glob
ABCDE
(1,2,3)
{value1,value2}
*main::type_glob
$

表面上の変数名が変わっても、型グロブにおけるシンボル名は変わってない。

Sample/perl/type_glob/type_glob/src/type_glob at master · bg1bgst333/Sample · GitHub

シンボリックリファレンス

シンボリックリファレンスは、非常に不思議な機能である。

The Perl5 Manual - シンボリックリファレンス
シンボリックリファレンス

単なる文字列の代入が、その文字列の名の付いた変数へのリファレンスの代入にもなるという2つの意味を持つ。
どちらを出力しても、

$ vi reference.pl
$ perl reference.pl
123
variable
$

どちらの機能も維持している。

Sample/perl/reference/symbolic_reference/src/reference at master · bg1bgst333/Sample · GitHub

構造体

ハッシュのリファレンスをネストしていって、構造体を作ることができる。

Perl - 無名配列と無名ハッシュ (itsのブログ)

foreachで構造体のメンバを比較的簡単に参照できる。

$ vi hash.pl
$ perl hash.pl
1
Taro
20
Tokyo

2
Jiro
18
Osaka

3
Saburo
16
Nagoya

$

このように各プロファイルを出力できる。

Sample/perl/hash/struct/src/hash at master · bg1bgst333/Sample · GitHub

多次元配列

配列のリファレンスをネストしていくと、多次元配列を作ることができる。

リファレンスと多次元データ構造 - Perl入門ゼミ

添字と添字の間のアロー演算子は省略できるので、より多次元配列っぽさがある。

$ vi array.pl
$ perl array.pl
1
5
9
1
5
9
$

指定した要素を取り出せている。

Sample/perl/array/multi_dimensional_array/src/array at master · bg1bgst333/Sample · GitHub

アロー演算子

C言語のポインタと同じく、配列などのリファレンスから要素の値を参照する場合はアロー演算子が使える。

配列のリファレンス - Perl入門ゼミ

添字の[]の前や、{}の前に->を置くことができる。

$ vi arrow_operator.pl
$ perl arrow_operator.pl
3
3
value2
value2
$

このように値を取得できる。

Sample/perl/arrow_operator/arrow_operator/src/arrow_operator at master · bg1bgst333/Sample · GitHub