Perl:使用 -e 从命令行处理文件。传递的文件是如何访问的?
Perl: processing files from the command line with -e. How is the passed file accessed?
当我调用 Perl 时
perl -e '' foo.txt
如何访问foo?
如果我使用 -i,我可以就地编辑 foo.txt。我想 foo.txt 与某个文件句柄关联并打开以供直接访问?句柄是什么?如果我使用 -0777,文件是从 STDIN(比如)流式传输并存储在标量字符串中,还是打开并读入这样的字符串?哪个字符串?
我知道这可能是微不足道的,但我似乎找不到答案。
非常感谢您的帮助。
How is foo accessed?
它在 @ARGV
,和往常一样(特别是 $ARGV[0]
)。
-i
并没有真正运行到位。它重命名原始文件,并使用原始名称创建一个新文件。由 @ARGV
中的所有文件串联形成的伪文件的输入句柄称为 ARGV
; -i
处理的输出句柄称为 ARGVOUT
.
-0777
只是将 $/
(也称为输入记录分隔符)设置为 undef
,这导致 readline
到 return 整个文件为单个 "line".
有关详细信息,请参阅
首先,-i 本身不做任何事情;您必须实际读取 ARGV 文件句柄(空 <>
或 -n 或 -p 开关)。
当你这样做并设置了 -i 时,它将在命令行上打开文件(到 ARGV 文件句柄)并使用你指定的扩展名重命名它(或者如果你没有指定一个则取消链接它扩展名)并使用 ARGVOUT 文件句柄打开一个具有原始名称的新文件,选择它作为要打印到的默认文件句柄。
使用 -0777 不会改变任何内容,只是当您从文件中读取时,您将获得全部内容,而不仅仅是一行。
当我调用 Perl 时
perl -e '' foo.txt
如何访问foo?
如果我使用 -i,我可以就地编辑 foo.txt。我想 foo.txt 与某个文件句柄关联并打开以供直接访问?句柄是什么?如果我使用 -0777,文件是从 STDIN(比如)流式传输并存储在标量字符串中,还是打开并读入这样的字符串?哪个字符串?
我知道这可能是微不足道的,但我似乎找不到答案。
非常感谢您的帮助。
How is foo accessed?
它在 @ARGV
,和往常一样(特别是 $ARGV[0]
)。
-i
并没有真正运行到位。它重命名原始文件,并使用原始名称创建一个新文件。由 @ARGV
中的所有文件串联形成的伪文件的输入句柄称为 ARGV
; -i
处理的输出句柄称为 ARGVOUT
.
-0777
只是将 $/
(也称为输入记录分隔符)设置为 undef
,这导致 readline
到 return 整个文件为单个 "line".
有关详细信息,请参阅
首先,-i 本身不做任何事情;您必须实际读取 ARGV 文件句柄(空 <>
或 -n 或 -p 开关)。
当你这样做并设置了 -i 时,它将在命令行上打开文件(到 ARGV 文件句柄)并使用你指定的扩展名重命名它(或者如果你没有指定一个则取消链接它扩展名)并使用 ARGVOUT 文件句柄打开一个具有原始名称的新文件,选择它作为要打印到的默认文件句柄。
使用 -0777 不会改变任何内容,只是当您从文件中读取时,您将获得全部内容,而不仅仅是一行。