我对 perl 比较陌生,在check_ilo2_health.pl中有一个示例代码片段,其中有一段我不明白它是如何工作或为什么工作的语法。代码片段逐行解析 SSL 客户端数据,在本例中为 XML。
if ( $line =~ m/MESSAGE='/) {
my ($msg) = ( $line =~ m/MESSAGE='(.*)'/); #<---- HERE
if ( $msg !~ m/No error/ ) {
if ( $msg =~ m/Syntax error/ ) { #...etc
有问题的 XML 示例:
<RESPONSE
STATUS="0x0000"
MESSAGE='No error'
/>
因此,在这种情况下,if语句采用 XML 样本的MESSAGE行。我了解我的 ($msg)将变量视为一种列表,并且我了解正则表达式如何匹配;但是,我不明白的是$ msg分配给No error的语法。perl 似乎正在玩弄括号语法等以使其正常工作。虽然它有效,但我想知道它是如何工作的。任何援助将不胜感激。