私は perl に比較的慣れていませんが、check_ilo2_health.plにコードのサンプル スニペットがあり、どのように、またはなぜ機能するのか理解できない構文があります。コード スニペットは、SSL クライアント データ (この場合は XML) を 1 行ずつ解析しています。
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行を使用します。my ($msg)が変数を一種のリストとして扱い、正規表現がどのように一致するかを理解しています。しかし、私が理解していないのは、$msgがNo errorに割り当てられるような構文です。perl は、これを機能させるために括弧構文などをいじっているようです。それが機能している間、私はそれがどのように機能するか知りたいです。任意の支援をいただければ幸いです。