2011-06-22 71 views

回答

2
print reverse <>; 

<>在数组环境中计算,这意味着它“吸食“ 文件。它读取整个文件。在由@ARGV命名的文件表示的魔术文件的情况下,它将按照命令行参数(@ARGV)引用的顺序读取所有文件的内容。

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

print然后打印数组。

从你的笔记,你可能会想是这样的:

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

数组是一个变量类型;你的意思是“在列表上下文中评估”,“颠倒列表的顺序”,“然后打印列表”。 – ysth

1

这在docs for I/O operators描述。以下是文档的摘录:

空文件句柄<>是特殊的:它可以用来模拟sed和awk的行为。来自<>的输入来自标准输入或来自命令行上列出的每个文件。以下是它的工作原理:第一次计算<>时,将检查@ARGV数组,如果它是空的,则$ ARGV [0]设置为“ - ”,打开时为您提供标准输入。 @ARGV数组然后被处理为一个文件名列表。

它值得阅读整个文档,因为它提供了在各种使用情况下相当于<>的等效“非魔力”Perl代码。