[英]Perl, Assign to variable from regex match
我對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似乎正在使用括號語法,這樣才能實現。 雖然它有效但我想知道它是如何工作的。 任何援助將不勝感激。
參見Perlretut,Extracting-matches :
...在標量上下文中,
$time =~ /(\\d\\d):(\\d\\d):(\\d\\d)/
返回true或false值。 但是,在列表上下文中,它返回匹配值列表($1,$2,$3)
所以,在
($msg) = ( $line =~ m/MESSAGE='(.*)'/);
( $line =~ m/MESSAGE='(.*)'/)
返回捕獲組的匹配列表。 您有一個捕獲組,因此其內容將存儲在($ msg)中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.