程式码片段:
use File::Basename;
my @powerArray;
my $powerLoc = "/home/yuerki/10.12/proj";
@powerArray = glob("$powerLoc/*") if (-e $powerLoc);
print "FIRST: @powerArray is powerArray\n";
foreach my $powerNum (@powerArray) {
$powerNum= basename ($powerNum);
if($powerNum =~ /power/)
{
$powerNum =~ s/power//g;
$powerNum =~ s/\n//g;
$powerNum =~ s/^\s+|\s+$//g;
push(@powerList,"$powerNum") if ($powerNum =~ /^\d+$/);
}
}
print "SECOND: @powerArray is powerArray\n";
**“/home/yuerki/10.12/proj/”中的内容为:**电源1、电源2、电源3、电源4、电源5
输出:
第一个:/home/yuerki/10.12/项目/电源1/home/yuerki/10.12/项目/电源2/home/yuerki/10.12/项目/电源3/home/yuerki/10.12/项目/电源4/home/yuerki/10.12/项目/电源5是电源阵列
第二个:1 2 3 4 5是powerArray
**问题/疑问:**为什么“第二:1 2 3 4 5是否为powerArray”已进入输出?我希望它是“SECOND:/home/yuerki/10.12/proj/power 1/home/yuerki/10.12/proj/power 2/home/yuerki/10.12/proj/power 3/home/yuerki/10.12/proj/power 4/home/yuerki/10.12/proj/power 5”,因为我们在@powerArray中没有做任何更改,而只在$powerNum中做了更改。
有人能解释一下吗?还有,我怎样才能避免在@powerArray中的替换更改?因为我也需要在其他地方使用这个全局数组
2条答案
按热度按时间fcg9iug31#
进行如下修改:
希望这对你有帮助。
ev7lccsx2#
foreach循环将循环变量作为它的别名,而不是复制该迭代的标量。
复制一份。
或者避免修改它。