Perlのリファレンスを使用する方法

リファレンスはバックスラッシュ(\)を使用するとのことです。

Perlでは多次元配列が使用したい場合はリファレンスを使用します。

  • まずは各々の変数を定義
$scalar = "scalar";
@array = ('array0','array1');
%hash = (key1=>'value1', key2=>'value2');
  • 上記の変数のリファレンスをスカラ変数に設定する
$scalarref=¥$scalar;
$arrayref=¥@array;
$hashref=¥%hash;
  • リファレンスを元の型に戻す
$scalar_org=$$scalarref;
@array_org=@$arrayref;
%hash_org=%$hashref;
  • 無名配列と無名ハッシュの設定方法
$arrayref = ['array0', 'array1'];
$hashref = {key1=>'value1', key2=>'value2'};
  • デリファレンス演算子を使用して値を取り出す
$arrayref->[0]; #array0
$hashref->{key2}; #value2
  • ちょっと複雑なデータ構造
@array=(['item0','item1','item2'],
['item3','item4','item5']);

@{array[1]}; #@$arrayref : ['item3','item4','item5']
${array[1]}[2]; #item5
$array[1]->[2]; #item5
$array[1][2]; #item5
  • 配列とハッシュのスライス
@array=('item0','item1','item2');
#変数は配列のまま要素を指定 ('item1','item2')
@array_slice=@array[1,2];
%hash=(key1=>'val1',key2>'val2',key3=>'val3');
@array_slice=@hash{key1,key3}; #('val1','val3')
@keys = qw(key1 key3);
@array_slice=@hash{@keys};  #('val1','val3')

About this entry