Perl,从正则表达式匹配赋值给变量
发布时间:2020-12-15 21:46:59 所属栏目:大数据 来源:网络整理
导读:我对perl相对较新,并且在 check_ilo2_health.pl中有一个代码片段,其中有一段语法,我不明白它是如何工作或为什么工作.代码片段逐行解析SSL客户端数据,在本例中为XML. if ( $line =~ m/MESSAGE='/) { my ($msg) = ( $line =~ m/MESSAGE='(.*)'/); #---- HERE i
我对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:
所以,在 ($msg) = ( $line =~ m/MESSAGE='(.*)'/); ($line = ~m / MESSAGE ='(.*)’/)返回捕获组的匹配列表.您有一个捕获组,因此其内容将存储在($msg)中. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |