簡體   English   中英

Perl,從正則表達式匹配賦值給變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM