ルモーリン
ホーム 更新 Perl Sample サービス 雑談 鉄ゲタ Linux リンク 連絡先
【サーバー停止のお知らせ】VPSのホストメンテナンスのため2020-04-08 14:00~17:00のうち1時間程度停止します。

サブルーチンの引数

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;
}
可愛い たこルカ は 手乗りサイズからデススターまで
可愛い たこルカ は 手乗りサイズからデススターまで