【发布时间】:2013-01-20 20:33:18
【问题描述】:
我对 perl 比较陌生,check_ilo2_health.pl 中有一个示例 sn-p 代码,其中有一段语法我不明白它是如何工作或为什么工作的。代码 sn-p 正在逐行解析 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 行。我了解 my ($msg) 将变量视为一种列表,并且我了解正则表达式如何匹配;但是,我不明白的是 $msg 是 assigned 到 No error 的语法。 perl 似乎正在玩弄括号语法等以使其正常工作。虽然它有效,但我想知道它是如何工作的。任何帮助将不胜感激。
【问题讨论】:
-
如果你指的是
=~或!~,那是binding operators。
标签: regex perl syntax variable-assignment parentheses