我将一个数组和一个标量传递给一个函数来检查该值是否是数组的一部分,以防它不是部分,然后推送到数组.为了参考目的,它必须显示的是在推动它时必须显示数组的名称.这是我的代码
use v5.10.1; use strict; use warnings; my @ARRAY1 = qw/This is array of backup /; my @ARRAY2; my $value = "version.xml" ; sub CheckPush($$) { my $val = shift (@_); my $array_ref= shift (@_); unless ($val ~~ @$array_ref ) { print "$val is going to push to array \n"; push(@$array_ref,$val); } return (@$array_ref); } @ARRAY1 = CheckPush($value,\@ARRAY1); print "out \n"; foreach $_ (@ARRAY1) { print "$_ \n"; } @ARRAY2 = CheckPush ($value,\@ARRAY2); print "out2 \n"; foreach $_ (@ARRAY2) { print "$_ \n"; }
出局应该如下
$val is going to push Array (@ARRAY1) $val is going to push Array (@ARRAY2)
解决方法
传递数组的名称和引用;这并不难.
人们使用源过滤器或PadWalker :: var_name做这样的事情,但这不是一个好主意.