Hatena::Diary

Perl入門〜サンプルコードによるPerl入門〜 このページをアンテナに追加 RSSフィード

 サンプルコード中心のPerlの入門サイトです。現代的なPerl(v5.8.1以降)の書き方に準拠しています。  今日のひとこと: Perlは簡単なプログラムを作るのに便利。ソースコードはきれいに書けてデフォルトのモジュールがなかなかさえる。

2008-02-01

配列のリファレンス, 配列への変換, 要素の参照

関連

配列リファレンス, 配列への変換, 要素の参照

サンプル
use strict;
use warnings;

my @numbers = ( 1, 2, 3, 4, 5, 6, 7, 8 );
print "配列 : \@numbers = ( " , join( ',', @numbers ), " )\n";
print "\n";

#1:  配列のリファレンス @の前に \ をつけると、配列のリファレントになる。
my $numbers_ref1 =  \@numbers ; #デバッガで内容を見るときは、x $numbers_ref

    #配列のリファレンスを、 @{ } で囲うと元の配列に戻すことができる。
    #これを、デリファレンスという。
print "配列 : \@{ \$numbers_ref1 } = ( " , join( ',', @{ $numbers_ref1 } )," )\n";


#2: けれど、普通は上のような書き方はしない。
#   無名配列( [ ] )というものを使って、直接配列のリファレントを作る。
my $numbers_ref2 = [ 1, 2, 3, 4 ]; 
print "配列 : \@{ \$numbers_ref2 } = ( " , join( ',', @{ $numbers_ref2 } )," )\n";
print "\n";

#3: 配列の要素にアクセスする。( $array_ref->[ 要素番号 ] )
print "\$numbers_ref2->[0] = $numbers_ref2->[0]\n";
print "\$numbers_ref2->[1] = $numbers_ref2->[1]\n";

__END__

実行結果

解説

配列のリファレンス

  • リファレンスとは、配列の入っているメモリの位置を指すもの
  • C言語を知っているなら、「アドレス演算ができないポインタ」だと考える。
  • Javaを知っているなら、「参照」だと考える。

リファレンスとリファレント

  • 指されるほうをリファレントと呼び、指すほうをリファレンスと呼ぶ。

配列のリファレントの作成

  • my $numbers_ref1 = \@numbers ;
  • @の前に、\をつけると、配列のリファレントを作成できる。
  • \@numbersがリファレントで、$numbers_ref1がリファレンス。

直接配列のリファレントを作成する

  • my $numbers_ref2 = [ 1, 2, 3, 4 ];
  • リストを [ ] でくくると、配列のリファレントになる。
  • そして、そのリファレントを、リファレンス $numbers_ref2で指している。

配列の要素の参照

  • $numbers_ref2->[0]
  • 配列のリファレンス->[ 要素番号 ]

配列のリファレンス ドキュメント

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証