gpt4 book ai didi

perl - 使用逻辑或从 Perl 中的数组中删除项目

转载 作者:行者123 更新时间:2023-12-02 17:50:58 24 4
gpt4 key购买 nike

我有一个数组。我希望数组不包含任何 $regex 值(以逻辑或方式)。我以否定的方式使用 grep 命令,但我认为这并不能解决我的问题。非常感谢任何帮助。谢谢

 #!/usr/bin/perl -w 

use Data::Dumper;

my @array = ['hard_link is not present', 'dynamic variable', 'segfault'] ;

my $regex = qr/create_hard_link|Failed to reassign|Global variable/ ;

print Dumper(\@array) ;
my @wanted_array = grep {!$regex} @array ;
print Dumper(\@wanted_array);

它给我一个输出

$VAR1 = [
[
'hard_link is not present',
'dynamic variable',
'segfault'
]
];
$VAR1 = [];

最佳答案

与同名命令行工具不同,grep 不采用正则表达式模式;它需要一个表达式,该表达式的计算结果为要保留的项目的真实值。

$regex 有一个真值 - 编译的正则表达式模式不会字符串化为 0 或空字符串 - 所以 !$regex始终为 false,因此 grep 会过滤掉所有内容。您想要执行正则表达式匹配,因此您将需要正则表达式匹配运算符。

my @wanted_array = grep  { !/$regex/ } @array;
<小时/>

还有第二个问题。

# An array that contains a single element: a reference to an anonymous array.
my @array = ['hard_link is not present', 'dynamic variable', 'segfault'];

应该是

# An array that contains a three strings.
my @array = ('hard_link is not present', 'dynamic variable', 'segfault');

关于perl - 使用逻辑或从 Perl 中的数组中删除项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45289766/

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