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"が false であるためです。

これを修正するには、次の 2 つの方法があります。

  • chomp @result_listosp;改行の末尾を削除するには

  • 完全一致 ( )=~の代わりに正規表現一致 ( ) を使用するeq

于 2013-03-28T16:14:32.747 に答える