サブルーチンの引数としてハッシュを渡す Perl
サブルーチンの引数に配列を渡す方法を示しました。
サブルーチンの引数として配列を渡す 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);
{
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_hash1は、ハッシュの全てのキーと値を出力します。
eachは引数にハッシュを取りますので、$paramをハッシュとして扱います。
%{$param}として、ハッシュ扱いにします。
次に、receive_hash2では、ハッシュの個々のキーを指定して、
特定の値を出力しています。
通常、ハッシュの値へのアクセスは$hash{'KEY'}となりますので、
ここでは、${$param}{'KEY'}という形でアクセスします。
$hashの部分が、${$param}と代わります。
特定の値を出力しています。
通常、ハッシュの値へのアクセスは$hash{'KEY'}となりますので、
ここでは、${$param}{'KEY'}という形でアクセスします。
$hashの部分が、${$param}と代わります。
ハッシュや配列をサブルーチンに渡す事で、
データの集合をまとめて渡す事ができます。
C言語などでいう構造体のように扱う事ができます。
データの集合をまとめて渡す事ができます。
C言語などでいう構造体のように扱う事ができます。
| 固定リンク
「Perl」カテゴリの記事
- LWP::Simpleのmirrorをgetに変更した。掲示板監視スクリプト(2014.01.25)
- XMLRPC::Liteで更新Ping(2009.05.29)
- 楽天APIで自動アフィリエイトリンク作成(2009.05.19)
- モジュールをインストールしてみる(2008.01.22)
- Perlでコールバック サブルーチンの引数としてサブルーチンの参照を渡す(2007.11.26)
コメント