应该在那里找不到数组元素

时间:2013-03-28 16:08:07

标签: perl

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

1 个答案:

答案 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