大佬教程收集整理的这篇文章主要介绍了并发 – perl6 grep就像并行程序一样,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
这是失败时的错误消息.
> greP6 perl * An operation first awaited: in sub MAIN at /Users/xxx/Dropbox/bin/greP6 line 28 in block <unit> at /Users/xxx/Dropbox/bin/greP6 line 30 Died with the exception: CAnnot find method 'Any' on object of type Match in regex at /Users/xxx/Dropbox/bin/greP6 line 34 in sub do_something at /Users/xxx/Dropbox/bin/greP6 line 34 in block at /Users/xxx/Dropbox/bin/greP6 @R_471_5450@
代码是:
#!/usr/bin/env perl6 constant $color_red = "\e[31m"; constant $color_off = "\e[0m"; sub MAIN(Str $pattern,*@filenames){ my $chAnnel = ChAnnel.new(); $chAnnel.send($_) for @filenames; # dir(); $chAnnel.close; my @workers; for 1..3 -> $n { push @workers,start { while (my $file = $chAnnel.poll) { do_something($pattern,$filE); } } } await(@workers); } sub do_something(Str $pattern,Str $fileName) { #say $filename; for $filename.IO.lines -> $line { my Str $temp = $line; if $temp ~~ s:g/ (<$pattern>) /$color_red$0$color_off/ { say $filename ~ ": " ~ $temp; } } }
我的问题是它为什么有时会失败?
问候
鑫
race
method基本相同.
我转自:
if $temp ~~ s:g/ (<$pattern>) /$color_red$0$color_off/ {
至:
if $temp ~~ s:g/ ($pattern) /$color_red$0$color_off/ {
问题似乎消失了.
正如后面提到的Xin Cheng以及同一文档中所描述的那样,更简单的插值在字面上符合文档示例所阐明.发行票修复了以下问题:
@H_382_4@my $reg = regex { <$pattern> }; '' ~~ $reg;导致更新的程序具有类似的解决方法:
#!/usr/bin/env perl6 constant $color_red = "\e[31m"; constant $color_off = "\e[0m"; sub MAIN(Str $pattern,*@filenames){ my $chAnnel = ChAnnel.new(); $chAnnel.send($_) for @filenames; # dir(); $chAnnel.close; my @workers; # match seems required for pre-compilation '' ~~ (my regex pat_regex { <$pattern> }); for 1..3 -> $n { push @workers,start { while (my $file = $chAnnel.poll) { do_something(&pat_regex,$filE); } } } await(@workers); } sub do_something(Regex $pat_regex,Str $fileName) { # say $filename; for $filename.IO.lines -> $line { my Str $temp = $line; if $temp ~~ s:g/ ($pat_regeX) /$color_red$0$color_off/ { say $filename ~ ": " ~ $temp; } } }
我为之前提出的明确的EVAL解决方案道歉,我能说的最好的是我的描述要求更好的解决方案.
以上是大佬教程为你收集整理的并发 – perl6 grep就像并行程序一样全部内容,希望文章能够帮你解决并发 – perl6 grep就像并行程序一样所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。