使用拼接修改数组内容

问题描述:

我正在尝试使用splice函数在特定数组位置插入'1'的脚本,打印它并稍后在同一位置插入'0'。我迄今的逻辑是:使用拼接修改数组内容

my @array = (0) x 4096; 
for ($j=0;$j<3;$j++) { 
splice (@array, $array[$j],1,1); 
print "$j---$array[$j]\n"; 
splice (@array, $array[$j],1,0); 
} 

有了这个逻辑,我发现了输出为: 0 --- 1 1 --- 0 2 --- 0

要更精确地,我期待出这个逻辑的输出是: 0 --- 1 1 --- 1 2 --- 1

我使用拼接函数正确这里吗?

我不认为你需要splice做你想做的。只是需要一个简单的任务:

use warnings; 
use strict; 

my @array = (0) x 4096; 
for (my $j = 0 ; $j < 3 ; $j++) { 
    $array[$j] = 1; 
    print "$j---$array[$j]\n"; 
    $array[$j] = 0; 
} 

__END__ 

0---1 
1---1 
2---1 

参考:

perldoc -f splice 
+0

是的,当然。我完全陷入了这些perl函数中,我忘记了基本任务。谢谢。但是为什么上面带有'splice'的片段不起作用的任何特殊原因? – CDN

+0

请为我的$ j(0 .. 2){''使用'foreach'而不是' – shawnhcorey

splice想要索引不是元素:

splice (@array, $j,1,1); 

你的情况,你逝去的0(元素值)作为索引,因此它在开头插入一个元素。但用单个元素替换单个元素最好用简单的赋值来完成。