需要更多解释这里做了什么?

时间:2011-06-22 03:22:25

标签: perl

print reverse <>;
print sort <>;

perl处理这些操作的具体步骤是什么?

对于1st来说,perl不仅可以反转调用参数的顺序,还可以反转每个文件的内容......

2 个答案:

答案 0 :(得分:2)

 print reverse <>;

<>在数组上下文中进行评估,这意味着它会“玷污”文件。它读取整个文件。对于由@ARGV中指定的文件表示的魔术文件,它将按命令行参数(@ARGV)引用的顺序读取所有文件的内容。

reverse然后反转数组的顺序,这意味着最后一个文件的最后一行是第一个,最后一个文件的第一行是最后一行。

print然后打印数组。

从你的笔记中,你可能想要这样的东西:

perl -e 'sub BEGIN { @ARGV=reverse @ARGV; } print <>;' /etc/motd /etc/passwd

答案 1 :(得分:1)

docs for I/O operators中对此进行了描述。以下是文档的摘录:

  

null文件句柄&lt;&gt;很特别:它可以用来模拟sed和awk的行为。来自&lt;&gt;的输入来自标准输入,或来自命令行中列出的每个文件。以下是它的工作原理:第一次&lt;&gt;如果进行评估,则检查@ARGV数组,如果为空,则将$ ARGV [0]设置为“ - ”,打开时会为您提供标准输入。然后将@ARGV数组作为文件名列表处理。

值得阅读整个文档,因为它在各种用例中提供了等同于<>的等效“非魔法”Perl代码。