我们有一个运行Perl脚本的作业,它准备3个文件(Header,content,Footer),然后将它们合并到一个文件中。
使用系统命令准备头文件
$ret = system("/usr/bin/echo '$hdr' > $HDR_FILE");
if ( $ret != 0 )
{
print STDERR "**ERROR** error preparing header\n";
}
合并文件命令如下
$ret = system("/usr/bin/cat $HDR_FILE $CONTENT_FILE $TRLR_FIL > $OUTPUT_FILE");
if ( $ret != 0 )
print STDERR "**ERROR** merge failed\n";
在最近一次执行作业期间,我们没有看到任何标题错误的痕迹,但是当内容和预告片存在时,最终输出文件$OUTPUT_FILE
仍然没有标题。
可以
$ret = system("/usr/bin/echo '$hdr' > $HDR_FILE");
返回' 0'即使头文件为空,状态也是如此?
答案 0 :(得分:0)
我会通过更好的错误处理来简化您的代码:
选项1:使用反引号
$ret = `/usr/bin/echo '$hdr' > $HDR_FILE 2>&1`;
if ( $? || $ret )
{
print STDERR "**ERROR** error preparing header, error: $ret\n";
}
选项2:使用print而不是echo
open(my $fh,'>',$HDR_FILE) or die "Cannot write to $HDR_FILE";
print $fh $hdr;
close($fh);