Perl 6 - 找到两个文件中共有的行

作者: 焉知非鱼 | 来源:发表于2016-03-11 03:22 被阅读62次

    找出两个文件中共有的行, 顺序无关紧要


    在 Perl 5 里, 你可以这样:

    #!/usr/bin/env perl
    use 5.010; use warnings; use strict;
    
    my %filea = map { $_ => 1 } do { open my $fa, '<', 'filea' or die $!; <$fa> };
    my %fileb = map { $_ => 1 } do { open my $fb, '<', 'fileb' or die $!; <$fb> };
    for( keys %filea ){
        print if $fileb{$_};
    }
    

    在 Perl 6 中就长这样:

    #!/usr/bin/env perl6
    use v6;
    
    my @a := "filea".IO.lines;
    my @b := "fileb".IO.lines;
    .say for keys( @a ∩ @b );
    

    因为 Perl 6 中的"惰性列表”, 底层实现能把工作分割成不同的任务并行执行, 然后在需要结果的时候返回给它们. 所以, 这种情况下, @a@b 的填充可以同时运行.但是要点是, 如果你有耗费时间,不彼此依赖的操作, 或者函数A要传递一个 item列表给函数B, 这些操作可能并行执行, 提高速度, 你不需要做任何线程相关的东西. 非常赞!

    相关文章

      网友评论

        本文标题:Perl 6 - 找到两个文件中共有的行

        本文链接:https://www.haomeiwen.com/subject/lgntlttx.html