配列とハッシュ、リファレンス
「@」で使用する場合と「$」で使用する場合とかリファレンスとかなんかよくわからないので再度復習がてら
配列
ソース
#!/usr/bin/env perl # use strict; use warnings; use Data::Dumper; # 配列変数として定義 my @aaa; # $変数名でアクセス $aaa[0] = "zzzzzz"; $aaa[2] = 21220; # $変数名でアクセス print $aaa[0] . "\n"; print $aaa[2] . "\n"; print "\n"; # スカラー変数にリファレンスとして定義 my $bbb = []; # -> で要素を指定?なんか変… $bbb->[0] = "zzzzzzzzzz"; $bbb->[2] = "test"; # アクセスもこういうふうになる print $bbb->[0] . "\n"; print $bbb->[2] . "\n"; print "\n"; # 初期設定で設定済み my @ccc = (100, 200, 300); print $ccc[0] . "\n"; # 初期設定で設定済み my $ddd = [500, 600, 700]; print $ddd->[0] . "\n";
実行結果
[root@localhost ~]# perl bbbb.pl zzzzzz 21220 zzzzzzzzzz test 100 500 [root@localhost ~]#
うーん、「->」が付くのはちょっと嫌な感じ「@」で定義しているのに要素へアクセスする場合は「$」へアクセスするのがつまりどころかな
ハッシュ
ソース
#!/usr/bin/env perl # use strict; use warnings; use Data::Dumper; # ハッシュ変数として定義 my %aaa; $aaa{hoge1} = "111"; $aaa{hoge2} = 20; print $aaa{"hoge1"} . "\n"; print $aaa{"hoge2"} . "\n"; print "\n"; # ハッシュリファレンスに設定 my $bbb = {}; $bbb->{foo1} = 200; $bbb->{foo2} = "aaaaa"; print $bbb->{foo1} . "\n"; print $bbb->{foo2} . "\n"; print "\n"; # ハッシュ配列に初期設定 my %ccc = ( aaaa1 => 300, aaaa2 => "aaaaaa", aaaa3 => "hoge" ); print $ccc{aaaa1} . "\n"; print $ccc{aaaa2} . "\n"; print $ccc{aaaa3} . "\n"; print "\n"; # ハッシュリファレンスに初期設定 my $ddd = { bbbb1 => "xxxxxxx", bbbb2 => 300, bbbb3 => 5555 }; print $ddd->{bbbb1} . "\n"; print $ddd->{bbbb2} . "\n"; print $ddd->{bbbb3} . "\n"; print "\n";
結果
[root@localhost ~]# perl aaaa.pl 111 20 200 aaaaa 300 aaaaaa hoge xxxxxxx 300 5555 [root@localhost ~]#
「%」、「$」でアクセスが変わるのは配列と同じ…
配列と異なりアクセスはちょっと違和感ないけどこの「->」のありなしの違いを理解しておかないとはまりやすいので気をつけないといけない
配列にハッシュをリファレンス
ソース
#!/usr/bin/env perl # use strict; use warnings; use Data::Dumper; # 配列 my @list; # ハッシュのデータをリファレンスで配列に格納 my %aaa1 = ( aaa => 100, bbb => 200, ccc => 50 ); my %aaa2 = ( aaa => 220, bbb => 450, ccc => 150 ); my %aaa3 = ( aaa => 120, bbb => 240, ccc => 500 ); # 配列を追加 push(@list, \%aaa1); push(@list, \%aaa2); push(@list, \%aaa3); for my $item (@list){ print $item->{aaa} . "-" . $item->{ccc} . "-" . $item->{ccc} . "\n"; }
実行結果
[root@localhost ~]# perl cccc.pl 100-50-50 220-150-150 120-500-500 [root@localhost ~]#
まだ他にもあるけど
mapとかgrepとかsortとかあるけどもう少し学習し直す必要がありそう。
配列とハッシュを組み合わせて複数キーを使用したソートとかにも利用できそうなのでもう少し勉強する。
なんかもうすぐ来るかも
Webアプリエンジニア養成読本[しくみ、開発、環境構築・運用…全体像を最新知識で最初から! ] (Software Design plus)
- 作者: 和田裕介,石田絢一(uzulla),すがわらまさのり,斎藤祐一郎
- 出版社/メーカー: 技術評論社
- 発売日: 2014/03/11
- メディア: 大型本
- この商品を含むブログ (2件) を見る
言語のうんぬんはともかく運用方法などは素人なんで参考にできるかも…