我有一个我需要测试的设备的输出,主要是响应是一行,但有时它是两行.我用一个简单的正则表达式解析一行或两行
if ($prompt =~ /(\s.*?)\r\n(.*)/) { Note('Multiline '.$string); TestPrompt($string,$1); TestPrompt($string,$2); } else { TestPrompt($string,$prompt); }
但是,如果响应超过两行呢?这段代码无法处理额外的行,我想在我的设计中保持健壮.有没有办法从正则表达式中捕获用于foreach?
解决方法
为什么不使用split函数来执行此操作?这是一个
link to some examples的用法.对于您的示例,为什么不这样做:
my @lines=split /\r\n/,$prompt; Note("Multiline $string") if @lines>1; foreach my $line (@lines) { TestPrompt($string,$line); }