道歉,看起来我的原始问题无法正确解释我在做什么以及我想要实现什么.这是一个更新的问题.
这可能是最简单的问题,但我无法在任何地方找到答案.
我有一个很大的Perl模块(比如ABC.pm),当我们添加新功能时,它会不断增长.大多数这些功能(几乎90%)发送请求和处理响应.以下是一个此类请求的代码.
sub UserDeleteRequest
{
my ($self, $inputParam) = @_;
my $config = $self->getConfig();
return $self->_doRequest (REQUEST => 'UserDeleteRequest',
PARAM => $inputParam));
}
Run Code Online (Sandbox Code Playgroud)
与此类似,编写了其他函数,并在我们添加新请求时不断增长.
拥有大文件变得难以维护.所以,我正在寻找一些最佳实践来使这更容易.我想到的一个想法是将这个大模块拆分成多个文件(如何??)
Perl是支持按返回类型重载函数的语言之一.
简单的例子是wantarray().
CPAN中几乎没有很好的模块可以扩展这个wantarray()并为许多其他返回类型提供重载.这些模块是Contextual :: Return and Want.不幸的是,我不能使用这些模块,因为这两个模块都没有使用perl版本5.8.9的perl评论家(我无法升级这个perl版本).
所以,我正在考虑像Contextual :: Return和Want一样编写我自己的模块,但却非常简单.我试图理解Contextual :: Return和Want模块代码,但我不是专家.
我需要函数重载只返回类型BOOL,OBJREF,LIST,SCALAR.
请通过提供一些指导帮助我,我该如何开始.
我理解"string-eval"可以用于它.但我正在寻找一些替代方案来实现它eval.理由是"字符串评估"失败了perl评论家,根据客户政策,我不能使用它.
所以,请告诉我一些替代方案eval.
这是我想要做的:
我将动态生成的代码ref传递给函数.此函数评估此代码ref并将结果分配给变量.
my $var = "Hello";
my $Hello = "Hi";
Run Code Online (Sandbox Code Playgroud)
我的问题是:如何在$ var中替换$ Hello的值?这里$ var包含字符串"Hello"(有一个名为$ Hello的变量).我正在寻找一种方法用变量$ Hello的值替换它.请让我知道我该怎么做?
目前,我使用以下代码将不规则的多维数组转换为一维数组.
my $array = [0,
[1],
2,
[3, 4, 5],
[6,
[7, 8, 9 ],
],
[10],
11,
];
my @mylist;
getList($array);
print Dumper (\@mylist);
sub getList
{
my $array = shift;
return if (!defined $array);
if (ref $array eq "ARRAY")
{
foreach my $i (@$array)
{
getList($i);
}
}
else
{
print "pushing $array\n";
push (@mylist, $array);
}
}
Run Code Online (Sandbox Code Playgroud)
这基于递归,我在检查每个元素.如果element是对数组的引用,则使用新数组递归调用它.
有没有更好的方法来解决这类问题?