gpt4 book ai didi

arrays - 如何在不使用 Perl 循环的情况下过滤数组?

转载 作者:行者123 更新时间:2023-12-03 09:43:28 24 4
gpt4 key购买 nike

在这里,我试图仅过滤没有子字符串的元素 world并将结果存储回同一个数组。在 Perl 中执行此操作的正确方法是什么?

$ cat test.pl
use strict;
use warnings;

my @arr = ('hello 1', 'hello 2', 'hello 3', 'world1', 'hello 4', 'world2');

print "@arr\n";
@arr =~ v/world/;
print "@arr\n";

$ perl test.pl
Applying pattern match (m//) to @array will act on scalar(@array) at
test.pl line 7.
Applying pattern match (m//) to @array will act on scalar(@array) at
test.pl line 7.
syntax error at test.pl line 7, near "/;"
Execution of test.pl aborted due to compilation errors.
$

我想将数组作为参数传递给子例程。

我知道一种方法是这样的
$ cat test.pl 
use strict;
use warnings;

my @arr = ('hello 1', 'hello 2', 'hello 3', 'world1', 'hello 4', 'world2');
my @arrf;

print "@arr\n";

foreach(@arr) {
unless ($_ =~ /world/i) {
push (@arrf, $_);
}
}
print "@arrf\n";

$ perl test.pl
hello 1 hello 2 hello 3 world1 hello 4 world2
hello 1 hello 2 hello 3 hello 4
$

我想知道是否有办法在没有循环的情况下做到这一点(使用一些简单的过滤)。

最佳答案

那将是 grep() :

#!/usr/bin/perl

use strict;
use warnings;

my @arr = ('hello 1', 'hello 2', 'hello 3', 'world1', 'hello 4', 'world2');
my @narr = ( );

print "@arr\n";
@narr = grep(!/world/, @arr);
print "@narr\n";

关于arrays - 如何在不使用 Perl 循环的情况下过滤数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3960028/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com