0

我在使用 Perl 和处理输入文件时遇到问题。

我成功打开了文件,但是当我尝试将文件的内容打印到屏幕上时,它不会打印任何内容。

如果我在尝试打印到屏幕之前对该文件名执行系统调用 cat 打印到屏幕有效?!

不工作

    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 格式的文本文件。

有没有人见过这种行为?

/杨

编辑: print "$stream->{ 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" );

以前的行为仍然存在

4

1 回答 1

0

大卫 W 让我走上了正确的道路。

在运行打开它们以进行下一阶段处理的例程之前,我没有关闭我的 SortIndex.dat 文件。

我只能想象通过 system() 调用 cat 正在刷新缓冲区并将文件写出。

抱歉浪费了您的时间,这真是漫长的一周.......

谢谢各位的意见。

于 2013-10-14T01:09:01.323 回答