perl サブルーチンからいくつかの値を返し、それらをまとめて割り当てたいと考えています。
これは時々機能しますが、値の1つが次の場合は機能しませんundef
:
sub return_many {
my $val = 'hmm';
my $otherval = 'zap';
#$otherval = undef;
my @arr = ( 'a1', 'a2' );
return ( $val, $otherval, @arr );
}
my ($val, $otherval, @arr) = return_many();
Perl は undef 要素を無視して、値を連結しているようです。Python や OCaml のような代入の構造化は、私が期待しているものです。
複数の変数に戻り値を割り当てる簡単な方法はありますか?
編集:構造化データを渡すために私が現在使用している方法は次のとおりです。@a 配列は、MkV が提案したように、参照渡しする必要があります。
use warnings;
use strict;
use Data::Dumper;
sub ret_hash {
my @a = (1, 2);
return (
's' => 5,
'a' => \@a,
);
}
my %h = ret_hash();
my ($s, $a_ref) = @h{'s', 'a'};
my @a = @$a_ref;
print STDERR Dumper([$s, \@a]);