Regex 关于Perl switch语句中使用的Reg表达式的问题
Perl版本:使用5.8 ActivePerl 我尝试在Perl中插入reg表达式作为switch语句的单独条件,但失败了 你能告诉我更多关于如何修复的信息吗 我查阅了per doc,但找不到此类示例。谢谢Regex 关于Perl switch语句中使用的Reg表达式的问题,regex,perl,switch-statement,Regex,Perl,Switch Statement,Perl版本:使用5.8 ActivePerl 我尝试在Perl中插入reg表达式作为switch语句的单独条件,但失败了 你能告诉我更多关于如何修复的信息吗 我查阅了per doc,但找不到此类示例。谢谢 while (my $line =<$fh>) { # change foreach to while switch ($line) { case ($line =~ m/\<IDCateA\sName="(\w+)\"\sid="(\w+)\"\s
while (my $line =<$fh>) { # change foreach to while
switch ($line) {
case ($line =~ m/\<IDCateA\sName="(\w+)\"\sid="(\w+)\"\s/) {print " $1 = $2,\n";}
case ($line =~ m/\<IDCateB\sName="(\w+)\"\sid="(\w+)\"\s/) {print " $1 = $2,\n";}
}
my $nextline = <$fh>;
}
while(my$line=){#将foreach更改为while
交换机($line){
案例($line=~m/\当从5.10或更高版本开始时,您应该将given
或foreach
与一起使用,而不是旧的弃用Switch.pm
模块。当从5.10或更高版本开始时,您应该将given
或foreach
与一起使用,而不是旧的弃用Switch.pm
模块。<>避免使用Switch.pm;它是使用脆性技术实现的。
我相信它在Switch模块内的作用域中执行正则表达式,这样$1等在代码中就不可用了(在删除不属于那里的$line=~
之后)
您的代码板示例缺少使用开关
。我也很难让开关与\uuuu数据
配合
perldoc-q switch
展示了在无法使用5.10.1的给定/when语法时使用类似switch语句的多种方法,例如:
use strict;
use warnings;
while (my $line = <DATA>) {
for ($line) {
if (/<IDCateA\sName="(\w+)"\sid="(\w+)"\s/) {print " $1 = $2,\n"}
elsif (/<IDCateB\sName="(\w+)"\sid="(\w+)"\s/) {print " $1 = $2,\n"}
}
}
__DATA__
<IDCateA Name="SystemAlpha" id="0" units="" min="0" max="8" default="0" value="3"/>
<IDCateB Name="SystemBeta" id="1" units="" min="0" max="2" default="0" value="0"/>
使用严格;
使用警告;
while(我的$line=){
用于($行){
如果(/避免使用Switch.pm;它是使用脆性技术实现的。
我相信它在Switch模块内的作用域中执行正则表达式,这样$1等在代码中就不可用了(在删除不属于那里的$line=~
之后)
您的代码板示例缺少使用开关
。我也很难让开关与\uuuu数据
配合
perldoc-q switch
展示了在无法使用5.10.1的给定/when语法时使用类似switch语句的多种方法,例如:
use strict;
use warnings;
while (my $line = <DATA>) {
for ($line) {
if (/<IDCateA\sName="(\w+)"\sid="(\w+)"\s/) {print " $1 = $2,\n"}
elsif (/<IDCateB\sName="(\w+)"\sid="(\w+)"\s/) {print " $1 = $2,\n"}
}
}
__DATA__
<IDCateA Name="SystemAlpha" id="0" units="" min="0" max="8" default="0" value="3"/>
<IDCateB Name="SystemBeta" id="1" units="" min="0" max="2" default="0" value="0"/>
使用严格;
使用警告;
while(我的$line=){
用于($行){
如果(/@Nano:我想你会从案例
部分删除那些$line=~
,因为应该对你正在打开的任何东西进行匹配。我按照你的指南进行了测试,但不起作用。语法错误。请参阅codepad@Nano:我想你会从案例
部分删除那些$line=~
,因为应该对您正在打开的任何设备进行匹配。我按照您的指南进行了测试,但不起作用。语法错误。请参阅代码板