Perl 读取文件(逐行)问题
我试图使用gnuplot自动化一个数据分析程序,基本上我所做的是在gnuplot中运行一个曲线拟合程序,然后读取日志文件以取出所需的值进行进一步分析 以下是代码部分:Perl 读取文件(逐行)问题,perl,file,while-loop,Perl,File,While Loop,我试图使用gnuplot自动化一个数据分析程序,基本上我所做的是在gnuplot中运行一个曲线拟合程序,然后读取日志文件以取出所需的值进行进一步分析 以下是代码部分: #Open curvefit log file to gather the needed coefficients open (FILE_CURVE, 'fit.log') or die; while (<FILE_CURVE>) { push(@log, $_); print "Im here\
#Open curvefit log file to gather the needed coefficients
open (FILE_CURVE, 'fit.log') or die;
while (<FILE_CURVE>)
{
push(@log, $_);
print "Im here\n";
}
close (FILE_CURVE);
乍一看,这个循环的语法似乎是正确的。您确定文件确实正在被访问吗?尝试添加一条消息“文件无法打开:$!”,作为$!将打印与文件打开相关的任何错误消息
另外,如果您还没有,请使用strict和warnings pragmas。乍一看,该循环的语法似乎是正确的。您确定文件确实正在被访问吗?尝试添加一条消息“文件无法打开:$!”,作为$!将打印与文件打开相关的任何错误消息
另外,如果您还没有,请使用strict和warnings pragmas。这里有几个问题:
1。
强烈建议使用open的三个arg形式,并使用本地var而不是FILEHANDLE,这会污染全局名称空间,因此不要使用
open (FILE_CURVE, 'fit.log') or die;
使用
3.
这里有一个你想要的库
退房
及
--编辑--
根据你的评论,我猜类似的事情正在发生:
假设有两个代理人:
a producer (gnuplot) that writes to the log file
a consumer (your script) that reads from the log file
这里有几个问题:
1。
强烈建议使用open的三个arg形式,并使用本地var而不是FILEHANDLE,这会污染全局名称空间,因此不要使用
open (FILE_CURVE, 'fit.log') or die;
使用
3.
这里有一个你想要的库
退房
及
--编辑--
根据你的评论,我猜类似的事情正在发生:
假设有两个代理人:
a producer (gnuplot) that writes to the log file
a consumer (your script) that reads from the log file
一般经验法则:通常会有一个Perl库所以我使用了你的open方法,我得到了无法打开的消息,但是文件就在那里……一般的经验法则是:通常有一个Perl库所以我使用了你的open方法,我得到了无法打开的消息,但是文件在那里……如果我认为你说的是,你正在运行类似shell脚本的东西,首先执行gnuplot运行,然后直接在perl脚本之后检查日志,那么我是否正确地理解了你?因此,您的问题是perl脚本在日志文件为空时过早访问日志文件?如果是这样,您可以从perl脚本运行gnuplot,从而控制进程何时完成。问题是gnuplot创建fit.log文件的速度不够快,因此我不得不等待(5);为了给gnuplot一些时间,如果我认为您所说的是运行类似于shell脚本的东西来首先执行gnuplot运行,然后直接在perl脚本之后检查日志,那么我是否理解正确?因此,您的问题是perl脚本在日志文件为空时过早访问日志文件?如果是这样,您可以从perl脚本运行gnuplot,从而控制进程何时完成。问题是gnuplot创建fit.log文件的速度不够快,因此我不得不等待(5);为了给gnuplot一些时间。
a producer (gnuplot) that writes to the log file
a consumer (your script) that reads from the log file