Perl问题 - OTRS模块中的If-Statement

时间:2014-06-16 12:22:36

标签: perl if-statement

其实我并不真正了解Perl,但现在我需要更改OTRS的片段。

为了解释上下文,它位于OTRS的Module SystemMonitoring.pm中:

系统通过正则表达式将值从电子邮件中写出并保存在$ 1中。 有三个相关要素:国家,主持人和服务。 仅在元素状态中,我想从$ 2中写出值。在主机和服务的情况下,信息来自$ 1.

以下是摘录:

        for my $Element (qw(State Host Service)) {

        next ELEMENT if $AlreadyMatched{$Element};

        my $Regex = $Self->{Config}->{ $Element . 'RegExp' };

        if ( $Line =~ /$Regex/ ) {
            # get the found element value
                    $Self->{$Element} = $1;

            # remember that we found this element already
            $AlreadyMatched{$Element} = 1;
        }
    }

我希望有人可以帮我解决这个问题。

非常感谢!

1 个答案:

答案 0 :(得分:0)

我假设正如OP所提到的正则表达式是\s*State:\s+(\w+)\s->\s+(\w+)

在这种情况下,您只需测试$ Element的值。

if ($Element eq 'State') { print $2; } else { print $1; }

或更简洁,

print ($Element eq 'State') ? $2 : $1;