【发布时间】:2015-02-28 16:22:00
【问题描述】:
我假设print "foo" 只是print STDOUT "foo" 的快捷方式。
但是我注意到(至少)结合-i 开关,这个假设不再成立:
perl -ni 'print $_' file
这根本不会改变文件的内容。
perl -ni 'print STDOUT $_' file
然而,这会将内容打印到终端并使文件为空。
因此问题:打印的默认目标是什么? IE。第一次打印到哪里?
perldoc -f print 说:
要将默认输出句柄设置为 STDOUT 以外的其他内容,请使用选择操作。
显然 perl 在内部使用 select 操作将默认输出句柄设置为其他值。有没有办法明确指定当前的默认输出句柄?
这样我就可以写出类似的东西
perl -i -wne 'print {/b/ ? STDOUT : XXX } $_' file
构建一个 grep 删除所有打印的行。
【问题讨论】:
-
您是否查看了有关 `-i` 标志的文档?你学到了什么?
-
是的,我首先在
man perlrun中寻找-i选项。我在那里找不到答案。
标签: perl