配列の初期化と再初期化、そしてリファレンスとデリファレンスについて
備忘録。
制御構文内で配列のリファレンスを再初期化したいときに、思う通りに再初期化できないので、簡単な動作結果を確認する。
#!/usr/bin/env perl use strict; use warnings; use utf8; use Data::Dumper; # 配列のリファレンス用に変数を宣言する my $ref_array; # 初期化のしかたでリファレンス先のデータ型が決まる $ref_array = 1; $ref_array = []; print ref $ref_array, "\n"; # 配列のリファレンス用に変数をデリファレンスして初期化する @{$ref_array} = qw/1 2 3 4 5 6/; # デリファレンスした場合の表示内容 print "Dump Reference of Array.\n"; print Dumper($ref_array); # 配列のリファレンスの表示内容 print "Dump Array.\n"; print Dumper(@{$ref_array}); # デリファレンスして再初期化する print "Dereference and Initialize Array Again.\n"; @{$ref_array} = qw/A B C D E F G/; print Dumper(@{$ref_array}); # 配列のリファレンスを再初期化する print "Initialize Reference of Array Again.\n"; $ref_array = ['a', 'b', 'c', 'd', 'e', 'f']; print Dumper($ref_array); print Dumper(@{$ref_array});
実行結果。
ARRAY Dump Reference of Array. $VAR1 = [ '1', '2', '3', '4', '5', '6' ]; Dump Array. $VAR1 = '1'; $VAR2 = '2'; $VAR3 = '3'; $VAR4 = '4'; $VAR5 = '5'; $VAR6 = '6'; Dereference and Initialize Array Again. $VAR1 = 'A'; $VAR2 = 'B'; $VAR3 = 'C'; $VAR4 = 'D'; $VAR5 = 'E'; $VAR6 = 'F'; $VAR7 = 'G'; Initialize Reference of Array Again. $VAR1 = [ 'a', 'b', 'c', 'd', 'e', 'f' ]; $VAR1 = 'a'; $VAR2 = 'b'; $VAR3 = 'c'; $VAR4 = 'd'; $VAR5 = 'e'; $VAR6 = 'f';