Perl模块中的一个函数有3个参数。第一个参数的值将决定其他参数的值,并将它们返回给调用者。它的定义如下:
package MyModule;
sub MyFunction
{
my $var_0 = $_[0];
my $var_1;
my $var_2;
if ($var_0 =~ /WA/) {
$var_1 = "Olympia";
$var_2 = "Population is 53,000";
}
elsif ($var_0 =~ /OR/) {
$var_1 = "Salem";
$var_2 = "Population is 172,000";
}
$_[1] = $var_1;
$_[2] = $var_2;
return 0; # no error
}
从bash shell脚本调用此函数:
VAL=`perl -I. -MMyModule -e 'print MyModule::MyFunction("WA")'`
echo $VAL
问题:瓦尔仅存储最后一个变量或$var_2的值。
问:我如何从$var_1和$var_2中检索值,以便稍后在此bash脚本中使用?(假设来自perl函数的代码不能被修改)。感谢您的帮助。
2条答案
按热度按时间oxiaedzo1#
您的函数正在修改其参数的值**#2****#3**,因此您可以将变量传递给它并打印它们:
pzfprimi2#
打印
MyFunction
返回的值,即0
,这就是0
被赋值给$VAL
的原因。您应该传回值,而不是将它们指派给
$_[1]
和$_[2]
。第一个
您可能希望将这两个值放在不同的shell变量中。您可以将shell的
read
与上面的变量一起使用,或者使用以下变量:第一次
(我假设使用类似
sh
的shell。)