我正在寻找一种方法来清除 Perl 程序中的所有数组。
目前,我正在调用一个显式“重置”所有数组的子例程:
sub clear_arrays{(@array1,@array2,@array3)=((),(),());}
这迫使我找到程序中的所有数组并在子例程中逐字引用它们。
我查看了 perldocreset
, undef
, and delete
但无法以清除所有数组的方式解释其中任何一个。
Perl 有内置函数可以做到这一点吗?
如果没有,是否有一个函数可以返回所有数组变量的数组?
Ex:
my @prog_arrays = getarrays();
foreach(@prog_arrays){$_ = ();}
Where getarrays()
可能是一个内置的 Perl 函数,它返回程序中任何/所有初始化的数组。
EDIT:
My particular situation involves only two global arrays that need to be reset. I broadened the question out of curiosity rather than necessity. Basically, my globals are
@email_subject
&
@email_msg
.
随着脚本的进展和数据的收集/分析,它们会被推送一些值。在脚本结束时,将发送电子邮件,并且脚本可能会根据循环条件变量再次运行。
如果它再次运行,我需要清除这两个全局变量,以便它们可以在下一个循环周期中再次聚合。通过文字引用清除这两个数组并没有让我丧命,但我只是想知道 Perl 是否已经有一些内置函数来清除数组而无需字面引用它们。
这可能不是实现这一目标的最佳方法,但这是我考虑的第一个直观选择。