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

Kha*_*hai 1 parameters bash perl module function

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
}
Run Code Online (Sandbox Code Playgroud)

从 bash shell 脚本调用此函数:

VAL=`perl -I. -MMyModule -e 'print MyModule::MyFunction("WA")'`
echo $VAL
Run Code Online (Sandbox Code Playgroud)

问题:VAL 只存储最后一个变量或$var_2 的值。

问题:如何从 $var_1 和 $var_2 检索值,以便稍后在此 bash 脚本中使用?(假设来自 perl 函数的代码无法修改)。感谢您的帮助。

Fra*_*ona 5

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

perl -l -I. -MMyModule -e 'MyModule::MyFunction("WA",$a,$b); print $a; print $b;'
Run Code Online (Sandbox Code Playgroud)