我正在寻找一种方法来清除 Perl 程序中的所有数组。
目前,我正在调用一个显式“重置”所有数组的子程序:
sub clear_arrays{(@array1,@array2,@array3)=((),(),());}
这迫使我找到程序中的所有数组并在子例程中逐字引用它们。
我查看了 perldoc for reset
, undef
,delete
但无法以清除所有数组的方式解释它们中的任何一个。
有没有 Perl 的内置函数可以做到这一点?
如果没有,是否有一个函数可以返回所有数组变量的数组?
前任:
my @prog_arrays = getarrays();
foreach(@prog_arrays){$_ = ();}
哪里getarrays()
可能是一个内置的 Perl 函数,它返回程序中任何/所有初始化的数组。
编辑:
我的特殊情况只涉及两个需要重置的全局数组。我出于好奇而不是必要性扩大了这个问题。基本上,我的全局变量是
@email_subject
& @email_msg
。
随着脚本的进展和数据的收集/分析,它们的值被推送到其中。在脚本结束时,将发送电子邮件消息,并且脚本可能会根据循环条件变量再次运行。
如果它再次运行,我需要清除这 2 个全局变量,以便它们可以在下一个循环周期中再次聚合。通过字面引用清除这两个数组并没有杀死我,但我只是想知道 Perl 是否已经有一些内置函数来清除数组而不用字面引用它们。
这可能不是完成此任务的最佳方式,但这是我考虑的第一个直观选项。