【Perl】リファレンス
リファレンスを作るには、$や@や%の前に"¥"『バックスラッシュ』をつけてあげる。
デリファレンスする時は、リファレンスの変数の前に
スカラーの場合は$、
配列の場合は@、
ハッシュの場合は%、
をつける。
下は、配列の中にハッシュを設定する、そしてそれを取得する時のやり方。
割とよく使っているかも。
fetchrow_hashrefで受け取ったリファレンスを、ごにょごにょしたりする時とかによく使っている。
#!bin/usr/perl use strict; my %h1 = (dog => "犬", cat => "猫", ); my %h2 = (apple => "りんご", banana => "ばなな", ); my @a; my $h1_ref; # h1(ハッシュ)のリファレンス my $h2_ref; # h2(ハッシュ)のリファレンス $h1_ref = \%h1; $h2_ref = \%h2; @a = ($h1_ref, $h2_ref); print $a[0]->{dog}, "\n"; print $a[0]->{cat}, "\n"; print $a[1]->{apple}, "\n"; print $a[1]->{banana}, "\n";
$a[0]{dog}だと参照できないから注意。
$a[0]->{dog}ね。
慣れてない時は、頻繁になんでじゃーーーーーってなってた。
次は配列の中に配列を設定するやり方。
2次元配列ってやつ。
下は、正しそうで正しくないやり方。
ぱっと見あっている感じがするので、気をつけたい。
#!bin/usr/perl use strict; my @a = qw(1 2 3 4 5); my @b = qw(a b c d e); my @parent = (@a, @b); print "@parent\n"; # 1 2 3 4 5 a b c d e <- 絶賛1次元
正しくはこのようなする。
#!bin/usr/perl use strict; my @a = qw(1 2 3 4 5); my @b = qw(a b c d e); my @parent = (\@a, \@b); print "@parent\n"; # ARRAY(...) ARRAY(...) print "$parent[0][4]\n"; # 5 print "$parent[0]->[3]\n"; # 4 print "$parent[1][0]\n"; # a print "$parent[1]->[2]\n"; # c
$parent[0][0]と$parent[0]->[0]は、表現が違うけど同じ意味。
とりあえず、今日はこんなところで。
もう少し、いやもっと綺麗な日本語を書くように心がける。