首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Perl - splice()问题

Perl - splice()问题
EN

Stack Overflow用户
提问于 2013-06-12 23:47:54
回答 2查看 386关注 0票数 0

我在使用perl splice()方法时遇到问题。下面您将看到,我首先确定了要查找的两个字符串的索引,然后使用索引执行splice()以获得所需的数组。

我的代码如下:

代码语言:javascript
复制
my @a = qw(foo bar bazz elements in between hello bazz johnny bl aba);
my $z = 0;

for (my $i = 0; $i < @a; $i++)
{
    next unless $a[$i] =~ /bazz/;

    if( $z eq 0 )
    {
        $z++;
        $first = $i;
    }
    else
    {
        $second = $i;
    }               
    my @b = splice(@a,$first,$second);
    print Dumper(@b);
}

打印结果如下:

代码语言:javascript
复制
$VAR1 = 'bazz';
$VAR2 = 'elements';
$VAR3 = 'in';
$VAR4 = 'between';
$VAR5 = 'hello';
$VAR6 = 'bazz';
$VAR7 = 'johnny';

我的印象是,拼接需要在给定限制之间的块,当然包括在内。我不明白为什么“强尼”元素会出现在那里。这个列表不是应该停在第二个'bazz‘吗?

感谢您在这个问题上的任何建议。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-12 23:50:27

第二个参数是切片的长度,而不是切片末尾的索引。

票数 8
EN

Stack Overflow用户

发布于 2013-06-12 23:54:36

splice将参数设置为

代码语言:javascript
复制
splice @ARRAY, $OFFSET, $LENGTH, @REPLACE_LIST;

它从@ARRAY中删除从索引$OFFSET开始的$LENGTH元素,并将它们替换为给定的列表(或者当(隐式地)给定空列表时,从数组中删除它们)。

看起来你想要一个数组切片:

代码语言:javascript
复制
my @b = @a[$first .. $second];
print Dumper \@b;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17069850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档