« サブルーチンの引数として配列を渡す Perl | トップページ | サムネイルを一括作成 ImageMagick »

2007-08-21

サブルーチンの引数としてハッシュを渡す Perl

サブルーチンの引数に配列を渡す方法を示しました。
サブルーチンの引数として配列を渡す Perl
今回は、連想配列 ( ハッシュ ) を渡してみようと思います。
方法、内容は配列の場合と同じように、参照渡しで引数を渡します。。
違いは、受け取った側のサブルーチンでのハッシュへのアクセス方法が、
多少違ってきます。
sub receive_hash1
{
  my ($param) = @_;
  my ($key) = "";
  my ($val) = "";

  while (($key, $val) = each(%{$param})) {
    print "$key => $val\n";
  }
}

sub receive_hash2
{
  my ($param) = @_;

  print "${$param}{'NAME'}\n";
  print "${$param}{'TITLE'}\n";
  print "${$param}{'MSG'}\n";
  print "${$param}{'URL'}\n";
}

%hash = (
  "NAME" => "TagoSuck",
  "URL" => "tagosuck.cocolog-nifty.com",
  "TITLE" => "Hello",
  "MSG" => "Hello, Perl.");

&receive_hash1(\%hash);
print "\n";
&receive_hash2(\%hash);
配列との違いを見ていきましょう。
receive_hash1は、ハッシュの全てのキーを出力します。
eachは引数にハッシュを取りますので、$paramハッシュとして扱います。
%{$param}として、ハッシュ扱いにします。
次に、receive_hash2では、ハッシュの個々のキーを指定して、
特定のを出力しています。
通常、ハッシュの値へのアクセスは$hash{'KEY'}となりますので、
ここでは、${$param}{'KEY'}という形でアクセスします。
$hashの部分が、${$param}と代わります。
ハッシュ配列をサブルーチンに渡す事で、
データの集合をまとめて渡す事ができます。
C言語などでいう構造体のように扱う事ができます。

|

« サブルーチンの引数として配列を渡す Perl | トップページ | サムネイルを一括作成 ImageMagick »

Perl」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: サブルーチンの引数としてハッシュを渡す Perl:

« サブルーチンの引数として配列を渡す Perl | トップページ | サムネイルを一括作成 ImageMagick »