トップ 差分 一覧 ソース 置換 検索 ヘルプ PDF 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";

[カテゴリ: プログラミング言語 > Perl]



  • Hatenaブックマークに追加
  • livedoorクリップに追加
  • del.icio.usに追加
  • FC2ブックマークに追加

最終更新時間:2010年06月03日 22時35分26秒