如何将参数从Bash shell脚本传递到Perl模块,并检索值?

baubqpgj  于 2022-11-15  发布在  Perl
关注(0)|答案(2)|浏览(176)

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函数的代码不能被修改)。感谢您的帮助。

oxiaedzo

oxiaedzo1#

您的函数正在修改其参数的值**#2****#3**,因此您可以将变量传递给它并打印它们:

perl -l -I. -MMyModule -e 'MyModule::MyFunction("WA",$a,$b); print $a; print $b;'
pzfprimi

pzfprimi2#

打印MyFunction返回的值,即0,这就是0被赋值给$VAL的原因。
您应该传回值,而不是将它们指派给$_[1]$_[2]
第一个
您可能希望将这两个值放在不同的shell变量中。您可以将shell的read与上面的变量一起使用,或者使用以下变量:
第一次
(我假设使用类似sh的shell。)

相关问题