嗨,大家需要一些关于模块的帮助,并在另一个模块中清空动态创建的数组。
我有1个perl文件和2个perl模块(我已创建)
//file.pl
use ABC;
use XYZ;
for(qw/US UK China India France/)
{
ABC::fetchData // This will create array varialbes
XYZ::calculateYield
// This will use arrays dynamically created from fetchData
// At this point, when i return I want a new copy of the array used in XYZ.pm's calculateYield function
}
这是ABC.pm的一个例子
//ABC.pm
package ABC;
our @mainArray;
sub fetchData
{
// connect to database and fill up the @mainArray;
@mainArray = qw/a b c d e f/;
}
1;
这是XYZ.pm
的一个例子//XYZ.pm
package XYZ;
sub calculateYield
{
foreach my $eachelement ( @ABC::mainArray)
{
push @{$eachelement), "some_data_that_changes_every_time_from India, UK, US, France or China";
}
}
现在,问题出在这里,我想在每次调用(strong> for(1..5)后清空数组“ @ {$ eachelement} ”,因为 $ eachelement 在每个计数中保持不变。只有在XYZ模块中推送到 push @ {$ eachelement)的数据值才会根据值(美国,英国,中国,印度,法国)而变化。
该组的问题是,有没有办法在名称动态创建的模块中清空一个数组。例如,我想在每次完成for循环后清除XYZ.pm中的 @ {$ eachelement} 。
希望我以一种可以理解的方式表达它。如果你有更好的解决方案或我可以使用的其他东西,我愿意这样做。如果问题或代码的任何部分不清楚,请回复我。
PS:我不是在寻找一个小错误或拼写错误,这只是一个示例代码。我只是想知道如何做到这一点。
感谢您提前得到的帮助。
答案 0 :(得分:-1)
我环顾四周,找到了解决这个特殊问题的方法。我定义了一个全局函数
sub clear
{
for my $ref (values %MSQL::)
{
@{$ref} = ();
}
}
感谢大家的支持。
@Patrick,这不是TYPO错误。就像我说我在寻找逻辑。