gpt4 book ai didi

perl - 求Magic Perl Shared Lines Oneliner的解释

转载 作者:行者123 更新时间:2023-12-02 08:26:10 26 4
gpt4 key购买 nike

我发现了这个(here 如果你必须知道的话),它引起了我的注意。

$ perl -ne 'print if ($seen{$_} .= @ARGV) =~ /10$/' file1 file2

我知道 perl。但我不知道这是怎么做到的。

$ perl -ne 'print if ($seen{$_} .= @ARGV) =~ /10$/' <(echo 'zz\nabc\n3535\ndef') <(echo 'abc\ndef\nff')
abc
def

似乎它只是吐出共享的输入文件的行。现在将每一行作为键或其他内容放入散列中,我可以看到它如何帮助完成该任务,但是......那个正则表达式到底是怎么回事?

再考虑一下,.= 的使用也不是很明显。

最佳答案

  • 表达式 $seen{$_} .= @ARGV@ARGV 中的元素数附加到 $seen{$_}

  • 在读取第一个文件时,@ARGV只包含一个元素——第二个文件名

  • 在读取第二个文件时,@ARGV为空

  • 用作 %seen 散列键的 $_ 的值是从任一文件中读取的最新行

  • 如果任何给定行仅出现在第一个文件中,则只会将 1 附加到哈希元素

  • 如果任何给定行仅出现在第二个文件中,则只会将 0 附加到哈希元素

  • 如果任何给定行出现在两个文件中,10 将附加到散列元素,将其设置为 10

  • 读取第二个文件时,如果附加的 0 字符导致值 10 则打印该行

  • 这会导致出现在两个 文件中的所有行都打印到输出中

关于perl - 求Magic Perl Shared Lines Oneliner的解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31978280/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com