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

时间:2017-07-27 16:00:22

标签: perl temp filehandle

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

#!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;

但是,我收到错误声明&#34;无法打开GLOB ....&#34; 任何建议

2 个答案:

答案 0 :(得分:1)

要克隆(“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");

答案 1 :(得分:1)

使用$filename代替$fh

open ANOTHERFH, "<", $filename   or die "Cannot open $filename\n";

或者使用dup作为@ikegami建议