需要更多有关此处执行的操作的解释吗?

问题描述

|
print reverse <>;
print sort <>;
perl处理这些操作的确切步骤是什么? 对于ѭ1来说,perl不仅颠倒了调用参数的顺序,而且还颠倒了每个文件内容...     

解决方法

        
 print reverse <>;
“ 3”是在数组上下文中求值的,这意味着它“吸取”文件。它读取整个文件。对于以@ARGV命名的文件表示的魔术文件,它将以命令行参数(@ARGV)引用的顺序读取所有文件的内容。
reverse
然后反转数组的顺序,这意味着最后一个文件的最后一行在前,最后一个文件的第一行在最后。
print
然后打印阵列。 从笔记中,您可能想要这样的东西:
perl -e \'sub BEGIN { @ARGV=reverse @ARGV; } print <>;\' /etc/motd /etc/passwd
    ,        在I / O操作员文档中对此进行了描述。这是文档摘录:   空文件句柄<>是特殊的:它可用于模拟sed和awk的行为。来自<>的输入来自标准输入,或来自命令行上列出的每个文件。这是它的工作方式:第一次评估<>时,将检查@ARGV数组,如果它为空,则$ ARGV [0]设置为\“-\”,当打开时它会为您提供标准输入。然后,将@ARGV数组作为文件名列表进行处理。 值得阅读整个文档,因为它在各种用例中提供了等效于“ 3”的等效“非魔术” Perl代码。