Вы можете получить ту же функцию, что и Python, явно проверив, хочет ли контекст * массив с помощью функции wantarray
.
sub fnuh {
my $a = 'foo';
my $b = 'bar';
return wantarray ? ( $a, $b ), [ $a, $b ];
}
Или, если вы хотите сделать это много, вы можете написать функцию, которая сможет читать тот же контекст, если вы не изменили его.
sub pack_list {
my $want = wantarray;
return unless defined $want; # void context
return $want ? @_ : \@_;
}
Тогда назовите это так:
return pack_list( $a, $b );