使用Splice修改数组内容

时间:2013-07-09 01:31:04

标签: perl

我正在尝试使用拼接功能在特定阵列位置插入'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

我在这里正确使用拼接功能吗?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

splice希望索引不是元素:

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

在你的情况下,你传递0(元素值)作为索引,所以它在开头插入一个元素。但是,使用单个元素替换单个元素最好通过简单的赋值来完成。