perl - 使用单独的文件句柄读取使用 File::Temp 创建的临时文件

标签 perl temp filehandle

我使用 File::Temp 创建了一个临时文件并向其中添加了一些数据。在其他时间点,我想使用单独的文件句柄读取临时文件(seek 方法有效)。以下是代码片段。

#!usr/local/bin/perl
use File::Temp qw(tempfile);

my ($fh, $filename) = tempfile( SUFFIX => '.txt' );
my $towrite = "XXXX\nYYYY\nZZZZ\n";

open ANOTHERFH, "<", $fh or die "Cannot open $FH\n";
while (<ANOTHERFH>) {
   print "ANOTHERFH: $_";
}
close ANOTHERFH;

但是,我收到一条错误消息“无法打开 GLOB...” 有什么建议

最佳答案

要克隆(“dup”)系统文件句柄,语法为

open(my $fh, '<&', $fh_to_dup)          # dups into a new fd

open($existing_fh, '<&=', $fh_to_dup)   # dupds into fd fileno($existing_fh)

所以你想要

open(my $ANOTHER_FH, "<&", $fh)         # Avoid needless use of globals!
   or die("Can't dup temp file: $!\n");

关于perl - 使用单独的文件句柄读取使用 File::Temp 创建的临时文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45355761/

相关文章:

powershell - 如何使用powershell删除所有临时文件

perl - 如何在 Perl 中将多个日志文件视为一个虚拟文件?

c++ - 如何获取 C++ iostream 的文件句柄?

c - 关于C编程的文件处理问题

linux - 如何在 crontab 中正确设置 perl 脚本的环境变量?脚本正在使用解决方法执行

perl - 从 Jenkin 管道运行脚本时如何通过 ssh 在远程 AIX 机器中加载环境变量?

c# - 在路径中合并 %USERPROFILE%

tsql - 等于操作无法解决 “SQL_Latin1_General_CP1_CI_AS”和 “Latin1_General_CI_AS”之间的排序规则冲突

regex - 删除模式前的空行。怎么了?目前使用 Perl 但对 sed/AWK 开放

string - Perl:将字符串转换为数字(不是字面上的!)