请教 perl 多行文字 匹配问题

请教 perl 多行文字 匹配问题

有个返回字符串@output=“fan 1   ok
                                       fan 2   ok
                                       fan 3   ok”


如何分别匹配到这3个OK   ?
               $fan="@output1";
               @fan=~ m/^ Fan \d (\w+)/im;
另外还有一个问题 如果不确定有几个该 怎么办?
如果用$fan="@output1";  那么 fan 怎么是 “Fan 1 OK; Fan 2 OK; Fan 3 OK” 那就变成 单行了 谢谢 该怎么分别匹配那3个OK呀,都匹配出来


QUOTE:
原帖由 hustddb 于 2009-1-7 16:39 发表
如果不确定有几个该 怎么办?
               $fan="@ou ...



[Copy to clipboard] [ - ]
CODE:
perl -e '@output="fan 1 ok\nfan 2 ok\nfan 3 ok\nfan 4 ok";$fan="@output";@ok = $fan =~ /fan \d+ (\w+)/img;print scalar @ok, "\n"'

上面的@ok里
谢谢 可是返回是1
只返回了第一个OK


QUOTE:
原帖由 hustddb 于 2009-1-7 16:56 发表
只返回了第一个OK

你在什么环境运行的。
我在linux下

[Copy to clipboard] [ - ]
CODE:
perl -e '@output="fan 1 ok\nfan 2 ok\nfan 3 ok\nfan 4 ok";$fan="@output";@ok = $fan =~ /fan \d+ (\w+)/img;print scalar @ok, ":@ok\n"'
4:ok ok ok ok

$fan =~ /fan \d+ (\w+)/img;  我是 $fan =~ /fan \d  (\w+)/img;  为什么一个+ 能产生这个效果  ,谢谢  我验证通过了


QUOTE:
原帖由 hustddb 于 2009-1-8 08:58 发表
$fan =~ /fan \d+ (\w+)/img;  我是 $fan =~ /fan \d  (\w+)/img;  为什么一个+ 能产生这个效果  ,谢谢  我验证通过了

+表示1个以上(至少一个)前面的字符(组)
\d+表示1个以上数字,没有+只能匹配一个数字


QUOTE:
原帖由 hustddb 于 2009-1-8 08:58 发表
$fan =~ /fan \d+ (\w+)/img;  我是 $fan =~ /fan \d  (\w+)/img;  为什么一个+ 能产生这个效果  ,谢谢  我验证通过了

应该是你把其他地方搞错了。把你测试的完整代码贴上来。