pushで配列の末尾に要素を追加する。
Perlの組み込み関数 push の翻訳 - perldoc.jp
pushで40を追加。
$ vi push.pl $ perl push.pl 10 20 30 10 20 30 40 $
確かに40が末尾に追加された。
Sample/perl/push/push/src/push at master · bg1bgst333/Sample · GitHub
pushで配列の末尾に要素を追加する。
Perlの組み込み関数 push の翻訳 - perldoc.jp
pushで40を追加。
$ vi push.pl $ perl push.pl 10 20 30 10 20 30 40 $
確かに40が末尾に追加された。
Sample/perl/push/push/src/push at master · bg1bgst333/Sample · GitHub
refでリファレンスの情報を返す。
Perlの組み込み関数 ref の翻訳 - perldoc.jp
リファレンスなら、"SCALAR"とか"ARRAY"とか何のリファレンスかを文字列で返し、リファレンスでない場合、偽として空文字列を返す。
変数といろんなリファレンスをチェックしてみる。
$ vi ref.pl $ perl ref.pl SCALAR ARRAY HASH CODE $
最初は変数なので、何も返ってこないというか空文字列。
それ以降は何のリファレンスか返ってきてる。
Sample/perl/ref/ref/src/ref at master · bg1bgst333/Sample · GitHub
無名サブルーチンというものもある。
名前のないサブルーチンをその場で定義して、リファレンスとして変数に持っておける。
$$でデリファレンスして10と20を渡すと、
$ vi sub.pl $ perl sub.pl 30 $
足されて30が返る。
Sample/perl/sub/anonymous_sub/src/sub at master · bg1bgst333/Sample · GitHub
無名配列と同様に、無名ハッシュも作ることが出来る。
無名ハッシュ生成子 - ハッシュのリファレンスを作成 - Perl入門ゼミ
ハッシュの場合は、{}でキーと値を定義すると、それが無名ハッシュのリファレンスになる。
%$でハッシュ全体、$$~{}で要素の値。
$ vi hash.pl $ perl hash.pl HASH(0x55ef6f691278) 2 value1 value2 $
型情報、ハッシュサイズ、各要素。
Sample/perl/hash/anonymous_hash/src/hash at master · bg1bgst333/Sample · GitHub
リファレンスの応用として、無名配列を使うことが出来る。
無名配列生成子 [] - 配列のリファレンスを簡単に作成 - Perl入門ゼミ
要素を並べて[]で囲むと無名配列のリファレンスになるので、それをデリファレンスすれば要素の参照や操作ができる。
@$で配列全体を示し、$$~[]で要素の値を示す。
$ vi array.pl $ perl array.pl ARRAY(0x559e38d3f278) 3 1 2 3 $
型情報、配列サイズ、ときて各要素の値。
Sample/perl/array/anonymous_array/src/array at master · bg1bgst333/Sample · GitHub
ポインタへのポインタと同様に、リファレンスのリファレンスというものも使える。
perlref - Perlのリファレンスとネストしたデータ構造 - perldoc.jp
\\というように2回付ける場合は、$$$というように3回付けてデリファレンスする。
$ vi reference.pl $ perl reference.pl REF(0x55d32d99a278) SCALAR(0x55d32d9c8b90) ABCDE $
最初は、リファレンスであることを示している。
そして、スカラー変数。
最後に変数の値が取得できる。
Sample/perl/reference/reference_to_reference/src/reference at master · bg1bgst333/Sample · GitHub
リファレンスは、C言語のポインタのようなものであり、変数、配列、ハッシュ、サブルーチン、などが格納されているアドレスを示す。
perlref - Perlのリファレンスとネストしたデータ構造 - perldoc.jp
Perl/リファレンス - Wikibooks
変数などを代入する時、\を付けるとリファレンスを返すようになっている。
変数の場合は、リファレンスの参照先の値を返す(デリファレンスと呼ぶ)場合は、$を付ける。
$ vi reference.pl $ perl reference.pl SCALAR(0x55cc1245cb70) ABCDE $
リファレンスをそのままprintすると、型やアドレスが出力される。
デリファレンスで、格納していた値が出力される。
Sample/perl/reference/reference/src/reference at master · bg1bgst333/Sample · GitHub