トップ 一覧 置換 検索 ヘルプ RSS ログイン

perl でのリファレンス、デリファレンスの変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
http://chaichan.web.infoseek.co.jp/perlnote/perlnote2007-04-26.htm
リファレンスとは、変数が格納されているエリアの参照値(アドレス値)です。
C言語でいう、ポインターとほぼ同じ概念です。
変数のリファレンスを求めるには、変数の前に『\』を付けます。
逆にリファレンスが指すエリアに格納されている値を取得することをデリファレンスといいます。
リファレンスからデリファレンスを求めるのは、変数のタイプ応じて、前に『$,@,%』のいずれかを付けます。

!スカラー変数のリファレンスとデリファレンス
 $word = "A";
 print $word, "\n";
 
 # $wordのリファレンスをもとめる
 $ref_scalar = \$word;
 
 # $ref_scalarのデリファレンスをもとめる
 print $$ref_scalar, "\n";

!配列変数のリファレンスとデリファレンス
 @word = ("X", "Y", "Z");
 print @word, "\n";
 
 # @wordのリファレンスをもとめる
 $ref_array = \@word;
 
 # $ref_scalarのデリファレンスをもとめる
 print @$ref_array, "\n";
 
 # デリファレンスにて、スカラーである配列変数の要素の値をもとめるには、やはり『$』を付けます。
 print $$ref_array[0], "\n";
 print $$ref_array[1], "\n";
 print $$ref_array[2], "\n";
 
 # また、矢印演算子を使っても要素の値をもとめることが出来ます。こちらもデリファレンスといいます。
 print $ref_array->[0], "\n";
 print $ref_array->[1], "\n";
 print $ref_array->[2], "\n";

!ハッシュ変数のリファレンスとデリファレンス
 %word = ("aaa", "X", "bbb", "Y", "ccc", "Z");
 print %word, "\n";
 
 # %wordのリファレンスをもとめる
 $ref_hash = \%word;
 
 # $ref_scalarのデリファレンスをもとめる
 print %$ref_hash, "\n";
 
 # デリファレンスにて、スカラーであるハッシュ変数の要素の値をもとめるには、やはり『$』を付けます。
 print $$ref_hash{"aaa"}, "\n";
 print $$ref_hash{"bbb"}, "\n";
 print $$ref_hash{"ccc"}, "\n";
 
 # また、矢印演算子を使っても要素の値をもとめることが出来ます。こちらもデリファレンスといいます。
 print $ref_hash->{"aaa"}, "\n";
 print $ref_hash->{"bbb"}, "\n";
 print $ref_hash->{"ccc"}, "\n";

{{category2 プログラミング言語,Perl}}