配列とハッシュの基礎サンプル
最近、Perlのプログラムに触れる機会ができたのだが、配列とかハッシュとか、記号が多すぎて理解が追い付かない。 「$」とか「@」とか「%」とか「\」とか。
なので、以下のページを参考にしながら、軽くサンプルを作ってみた。
#! /usr/bin/perl # 別の変数に「コピー」を渡す my @ary1 = (1,2,3); my @ary2 = @ary1; # 件数を取るときは、一旦スカラー変数に代入 my $ct = @ary1; print $ct."\n"; # 「コピー」なので、元を変えても影響を受けない push @ary1, 4; for my $elem (@ary1) { printf "ary1 = $elem\n"; } for my $elem (@ary2) { printf "ary2 = $elem\n"; } # 別の変数に「参照(リファレンス)」を渡す my $ary3 = [1,2,3]; my $ary4 = $ary3; # 「参照(リファレンス)」なので、元を変えると先も変わる push @$ary3, 4; for my $elem (@{$ary3}) { printf "ary3 = $elem\n"; } for my $elem (@{$ary4}) { printf "ary4 = $elem\n"; } # 別の変数に「コピー」を渡す my %hash1 = (e1 => 1, e2 => 2, e3 => 3); my %hash2 = %hash1; # 「コピー」なので、元を変えても影響を受けない %hash1->{e4} = 4; for my $key (sort keys %hash1) { printf "hash1 = %s = %s\n", $key, %hash1->{$key}; } for my $key (sort keys %hash2) { printf "hash2 = %s = %s\n", $key, %hash2->{$key}; } # 別の変数に「参照(リファレンス)」を渡す my $hash3 = {e1 => 1, e2 => 2, e3 => 3}; my $hash4 = $hash3; # 「参照(リファレンス)」なので、元を変えると先も変わる $hash3->{e4} = 4; for my $key (sort keys %{$hash3}) { printf "hash3 = %s = %s\n", $key, %{$hash3}->{$key}; } for my $key (sort keys %{$hash4}) { printf "hash4 = %s = %s\n", $key, %{$hash4}->{$key}; }
出力は以下のような感じ。
Using a hash as a reference is deprecated at Main.pl line 38. Using a hash as a reference is deprecated at Main.pl line 40. Using a hash as a reference is deprecated at Main.pl line 43. Using a hash as a reference is deprecated at Main.pl line 53. Using a hash as a reference is deprecated at Main.pl line 56. 3 ary1 = 1 ary1 = 2 ary1 = 3 ary1 = 4 ary2 = 1 ary2 = 2 ary2 = 3 ary3 = 1 ary3 = 2 ary3 = 3 ary3 = 4 ary4 = 1 ary4 = 2 ary4 = 3 ary4 = 4 hash1 = e1 = 1 hash1 = e2 = 2 hash1 = e3 = 3 hash1 = e4 = 4 hash2 = e1 = 1 hash2 = e2 = 2 hash2 = e3 = 3 hash3 = e1 = 1 hash3 = e2 = 2 hash3 = e3 = 3 hash3 = e4 = 4 hash4 = e1 = 1 hash4 = e2 = 2 hash4 = e3 = 3 hash4 = e4 = 4
「Using a hash as a reference is deprecated」というのが気になるが、また後で調べよう。