0

我正在接收来自某个进程的输出,我想使用 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;
    }
}
4

1 回答 1

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)

于 2013-03-28T16:14:32.747 回答