无法在Perl中打开文本文件

Jen*_*ose 1 perl file-io

我从另一台服务器获取一些日志文件(以txt格式)并尝试使用我的Perl脚本解析它们.正在正确获取日志,之后我为日志目录设置了777的权限.

在此之后,我尝试通过我的Perl脚本逐个打开日志文件进行解析.现在,奇怪的事情和发生的问题是,我的脚本有时能够打开文件,有时不能.简单来说,它无法打开日志文件进行解析.

此外,我已经完成了这个perl脚本,并且当它通过cron而不是手动运行时,文件打开失败的可能性更大,尽管它们在之前的两种情况下都已成功运行.我不明白问题出在哪里.

这是我用来打开文件的代码,

$inputDir = "/path/to/dir";
@inputFiles = <$inputDir/*>;

# inputFiles array is list of files in the log directory
foreach my $logFile(@inputFiles)
{
    # just to ensure file name is text
    $logFile = $logFile."";

    # process file only if filename contains "NOK"
    if(index($logFile,"NOK") > -1)
    {
        # opens the file
        open($ifile, '<', $logFile) or die "Error: Unable to open file for processing.";

        # file parsing takes place
    }
}

close($ifile);
Run Code Online (Sandbox Code Playgroud)

我想重新迭代这个代码已成功运行,我没有改变它的任何部分.但是,它不会每次都运行,因为它无法有时打开日志文件.有任何想法吗?

TLP*_*TLP 5

您应该在字符串中包含错误消息$!和文件名$logFile,die以查看打开失败的原因以及文件.

open($ifile, '<', $logFile) or die "Error: Unable to open $logFile: $!";
Run Code Online (Sandbox Code Playgroud)

另外,这一行:

$logFile = $logFile."";
Run Code Online (Sandbox Code Playgroud)

......非常多余.如果需要转换,perl将处理它.