基本上,我试图只使用变量/标量来调用包函数,但我无法弄清楚为什么我会得到“错误:括号中的参数不正确”。
这是示例下午:
package foo;
sub bar {
my $request = @_[0];
if ($request eq 'fubar') {
my $response = 'definitely';
return $response;
else {
my $response = 'definitely not';
return $response;
}
}
1;
和样品pl
use strict;
use lib "/blah/blah/custom_modules";
use sample;
my $package = 'foo';
my $package_sub = 'bar';
my $package_sub_args = 'fubar';
my $response = $package->$package_sub("$package_args");
print "$response\n";
然后我得到错误。
但是,使用以下任何变体都可以:
my $response = foo::bar('fubar');
my $response = foo::bar($package_sub_args);
但我相信我不能在上面的 OO 符号类型中使用变量,必须使用 -> 符号。
无论如何,非常感谢帮助。
澄清 - 我遇到的问题是直到运行时才知道包、子或参数。当子不需要参数时,我可以使它工作。但是我有几个确实需要参数的潜艇,这就是我绊倒的地方......