配列の初期化と再初期化、そしてリファレンスとデリファレンスについて

備忘録。
制御構文内で配列のリファレンスを再初期化したいときに、思う通りに再初期化できないので、簡単な動作結果を確認する。

#!/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';