gpt4 book ai didi

regex - Perl,从正则表达式匹配分配给变量

转载 作者:行者123 更新时间:2023-12-04 17:23:47 26 4
gpt4 key购买 nike

我对 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 是 的语法。已分配 没有错误。 perl 似乎在玩括号语法等以使其工作。虽然它有效,但我想知道它是如何工作的。任何援助将不胜感激。

最佳答案

Perlretut, Extracting-matches :

... in scalar context, $time =~ /(\d\d):(\d\d):(\d\d)/ returns a true or false value. In list context, however, it returns the list of matched values ($1,$2,$3)



所以,在
($msg) = ( $line =~ m/MESSAGE='(.*)'/);
( $line =~ m/MESSAGE='(.*)'/)返回捕获组的匹配列表。您有一个捕获组,因此其内容存储在 ($msg) 中。

关于regex - Perl,从正则表达式匹配分配给变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14715606/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com