1

我正在尝试编写一个脚本,该脚本使用 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

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

4

2 回答 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
于 2013-07-09T01:40:34.820 回答
1

splice想要索引而不是元素:

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

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

于 2013-07-09T01:43:26.457 回答