我使用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; 任何建议
答案 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建议