我正在接收来自某个进程的输出,我希望使用perl从该进程的输出中搜索特定元素,如下所示,但即使有元素,它仍然返回FALSE。我想我正在做的事情解析时有错误帮助任何指针。 谢谢
流程输出:
origin-server-pool-1
http_TestABC
https_TestABC
脚本:
use strict;
use warnings;
my @result_listosp; #assigned from output process given above
my $osp="http_TestABC";
my $status_osp_check= check_if_entity_exists($osp,@result_listosp);
print $status_osp_check;
sub check_if_entity_exists()
{
my $entity = shift;
my @entityarray = @_;
my $status="FALSE";
if ( grep { $_ eq $entity} @entityarray) {
$status="TRUE";
return $status;
}
else {
return $status;
}
}
答案 0 :(得分:5)
您最有可能使用反引号(qx()
)。
这就像分配:
@result_listosp = ( "origin-server-pool-1\n", # Note the
"http_TestABC\n", # trailing
"https_TestABC\n" ); # newlines
grep
失败的原因是"http_TestABC" eq "http_TestABC\n"
为假。
解决此问题的两种方法:
chomp @result_listosp;
消除换行符
使用正则表达式匹配(=~
)而不是完全匹配(eq
)