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

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


在 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, 这些操作可能并行执行, 提高速度, 你不需要做任何线程相关的东西. 非常赞!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容