我有这个
sub test
{
my ($arg1, $arg2) = @_; # Argument list
code
return ($variable1, $variable2);
}
所以,当我通过
来调用它时test('text1','text2');
将两个返回值连接在一起。我怎样才能一次只召唤一个?
答案 0 :(得分:1)
my $output_choice_1 = ( test('text1','text2') )[0];
my $output_choice_2 = ( test('text1','text2') )[1];
或两者同时出现:
my ( $output_choice_1, $output_choice_2 ) = test('text1','text2');
虽然有时它会使更清晰的代码返回hashref:
sub test {
...
return { 'choice1' => $variable1, 'choice2' => $variable2 };
}
...
my $output_choice_1 = test('text1','text2')->{'choice1'};
答案 1 :(得分:0)
您是否在询问如何将sub返回的两个值分配给两个不同的标量?
my ($var1, $var2) = test('text1', 'text2');
答案 2 :(得分:0)
我对在Google中发现的内容并不满意,因此将解决方案发布在这里。
从子返回数组。
特别是带有反斜杠的语法使我很头疼。
#!/usr/bin/perl
use warnings;
use strict;
use Data::Dumper;
sub returnArrayWithHash {
(my $value, my %testHash) = @_;
return ( $value, \%testHash );
}
my %testHash = ( one => 'foo' , two => 'bar' );
my @result = returnArrayWithHash('someValue', %testHash);
print Dumper(\@result) . "\n";
返回我
$VAR1 = [
'someValue',
{
'one' => 'foo',
'two' => 'bar'
}
];