Perl中如何获取<>运算符将使用的当前文件句柄?
获取Perl中ARGV当前处理的文件句柄
你完全可以获取当前ARGV正在处理的文件句柄,不用非得显式打开文件——Perl提供了*ARGV{IO}这个方式来获取当前关联的文件句柄,它可以直接用于read这类需要句柄的操作。
举个实际使用的例子:
while (<>) { # 获取当前处理文件的句柄 my $current_fh = *ARGV{IO}; # 用句柄执行read操作 read $current_fh, my $buffer, 512; print "从文件 $ARGV 读取到的内容片段:$buffer\n"; }
当你调用close ARGV关闭当前文件后,下一次调用<>或者访问*ARGV{IO}时,Perl会自动切换到@ARGV列表中的下一个文件(如果有的话),不用额外处理。
当然,如果你需要更灵活的文件操作控制(比如自定义打开模式、错误处理),显式循环打开@ARGV里的每个文件也是完全没问题的,但用*ARGV{IO}可以保留Perl自动遍历文件列表、处理STDIN默认输入的便利。
内容的提问来源于stack exchange,提问作者Adrian
相关产品推荐
相关产品推荐

