检查 Perl 中 foreach 中的条件是否不匹配 推送到数组.



我正在使用Perl

我有一个字符串(逗号分隔(,然后在 foreach 中循环它。 在foreach中,我正在检查每个项目是否存在。棘手的部分来了。

如果一个项目不存在,我想将其推送到逗号分隔的字符串或数组,然后继续下一个项目。

目前,我使用的代码没有这样做。

这是我到目前为止所拥有的:

my @cnames = split(',', $comma_separated_values;
foreach my $cname (@cnames) {
my @records_to_change = "function to check the cname";
if (@records_to_change) {
$records_to_change[0]->set_google_maps_key($google_maps_key || '');
$records_to_change[0]->set_https_only( $https_only );
}else{
FAILED { 'success' => 0 };
}
$records_to_change[0]->update();
}

使用此代码,如果某个项不存在,它将停止,显示错误消息(此处未介绍(并且不会继续。

知道怎么做吗?

您发布的代码甚至无法编译(缺少右括号(。

目前尚不清楚挥手的"检查cname函数"返回什么,所以我不知道出了什么问题。但总的来说,逻辑是正确的,应该有效:

#!/usr/bin/perl
use warnings;
use strict;
use feature qw{ say };
sub check_existence {
exists {a => 12, c => 14}->{ $_[0] }
}
my $comma_separated_values = 'a,b,c,d';
my @cnames = split /,/, $comma_separated_values;
my @missing;
foreach my $cname (@cnames) {
if (check_existence($cname)) {
say "$cname is ok.";
} else {
push @missing, $cname;
}
}
say 'Missing: ', join ', ', @missing;

最新更新