我遇到了Perl问题并处理输入文件。
我正在成功打开文件,但是当我尝试将文件内容打印到屏幕时,它不会打印任何内容。
如果我在尝试打印到屏幕之前对该文件名执行系统调用,那么打印到屏幕的工作原理是什么?!
不工作
open( my $ifh, "<", "/data/$client/$product/$stream->{ fname }.SortIndex.dat" )
or die "$product: $file could not open parm file $stream->{ fname }.SortIndex.dat: $1";
while ( <$ifh> ) {
print $_;
}
工作
open( my $ifh, "<", "/data/$client/$product/$stream->{ fname }.SortIndex.dat" )
or die "$product: $file could not open parm file $stream->{ fname }.SortIndex.dat: $1";
system ( "cat $stream->{ fname }.SortIndex.dat" );
while ( <$ifh> ) {
print $_;
}
它让我塞满了,我尝试将手柄放入阵列并打印阵列的元素但没有成功。
文件句柄打开时没有错误,它只包含一行,而且是一个Unix格式的文本文件。
之前有没有人见过这种行为?
/吕
编辑:打印“$ stream-&gt; {fname} .SortIndex.dat”返回D347INVX.hold_synchk.SortIndex.dat
编辑:
print Dumper $stream;
$VAR1 = {
'fname' => 'D998INVX.hold_synchk'
};
print "/data/$client/$product/$stream->{ fname }.SortIndex.dat\n";
/data/SYN/SYNINV/D998INVX.hold_synchk.SortIndex.dat
我现在也在同一个文件上执行cat:
system( "cat /data/$client/$product/$stream->{ fname }.SortIndex.dat" );
以前的行为仍然存在
答案 0 :(得分:0)
在运行为下一个处理阶段打开它们的例程之前,我没有关闭我的SortIndex.dat文件。
我只能想象通过system()调用cat正在刷新缓冲区并将文件写出来。
抱歉浪费你的时间,这是一个非常漫长的一周.......
感谢大家的意见。