ルモーリン
ホーム 更新 Perl Sample ランドナー サービス 雑談 コースガイド 鉄ゲタ 自転車 Linux リンク 連絡先

サブルーチンの引数

2019-03-05

きっかけ

こんなツイートを見かけて。

コード

JSONのような階層構造の一部(枝葉)を渡すケースがあり、それ以来その手のデータはハッシュのリファレンスを渡すようにしています。 あとLWP::UserAgentといったモジュールの関数からリファレンスが返るので慣れちゃったせいもあるかな。 お好みでどちらも行けるのがPerlの良い所。
#!/usr/bin/env perl -w

use utf8;
use strict;
use warnings;

use Encode::Locale;
use Encode::Argv;
use URI;

use feature "say";

binmode STDIN, ":encoding(console_in)";
binmode STDOUT, ":encoding(console_out)";

$| = 1;

my %h = (
	name => "たこルカ",
	size => "手乗りサイズからデススターまで",
	appearance => "可愛い",
);

my %h2 = recv_hash_1(%h);

sub recv_hash_1 {
	my %h = @_;
	say "$h{appearance} $h{name} は $h{size}";
	return %h;
}

my $h = {
	name => "たこルカ",
	size => "手乗りサイズからデススターまで",
	appearance => "可愛い",
};

my $h2 = recv_hash_2($h);

sub recv_hash_2 {
	my ($h) = @_;
	say "$h->{appearance} $h->{name} は $h->{size}";
	return $h;
}

実行結果

可愛い たこルカ は 手乗りサイズからデススターまで
可愛い たこルカ は 手乗りサイズからデススターまで