在 Perl 中写入文件

Posted

技术标签:

【中文标题】在 Perl 中写入文件【英文标题】:Write to a file in Perl 【发布时间】:2012-09-26 04:59:27 【问题描述】:

考虑:

#!/usr/local/bin/perl
$files = "C:\\Users\\A\\workspace\\CCoverage\\backup.txt";
unlink ($files);
open (OUTFILE, '>>$files');
print OUTFILE "Something\n";
close (OUTFILE);

上面是我用Perl写的一个简单的子程序,但是好像不行。我怎样才能让它发挥作用?

【问题讨论】:

【参考方案1】:

变量仅在使用双引号" 的字符串中进行插值。如果您使用单引号 '$ 将被解释为美元。

尝试使用">>$files" 而不是'>>$files'

一直使用

use strict;
use warnings;

这将有助于获得更多警告。

无论如何也要声明变量

my $files = "...";

你还应该检查open的返回值:

open OUTFILE, ">>$files"
  or die "Error opening $files: $!";

编辑:正如 cmets 中所建议的那样,开放三个参数的版本以及一些其他可能的改进

#!/usr/bin/perl

use strict;
use warnings;

# warn user (from perspective of caller)
use Carp;

# use nice English (or awk) names for ugly punctuation variables
use English qw(-no_match_vars);

# declare variables
my $files = 'example.txt';

# check if the file exists
if (-f $files) 
    unlink $files
        or croak "Cannot delete $files: $!";


# use a variable for the file handle
my $OUTFILE;

# use the three arguments version of open
# and check for errors
open $OUTFILE, '>>', $files
    or croak "Cannot open $files: $OS_ERROR";

# you can check for errors (e.g., if after opening the disk gets full)
print  $OUTFILE  "Something\n"
    or croak "Cannot write to $files: $OS_ERROR";

# check for errors
close $OUTFILE
    or croak "Cannot close $files: $OS_ERROR";

【讨论】:

您还可以安装 Perl::Critic 一个有用的工具来检查 Perl 代码中的常见问题和错误 您应该始终使用带有词法文件句柄的三参数版本的 open open my $filehandle , '>>' , $file or die 'Horribly'; 我遇到了 croak 的编译问题。改用 die @Sam B:有哪些问题?您是否包括“使用鲤鱼”?

以上是关于在 Perl 中写入文件的主要内容,如果未能解决你的问题,请参考以下文章

当子进程和父进程在 Perl 中写入同一个日志文件时进程卡住(在 Windows 中)

perl:多线程写入和尾文件

如何在 perl 中为反引号加载 STDIN(不写入临时文件)

如何使用 Perl 删除 Excel 工作表中的整列并在新的 Excel 文件中写入更新的数据?

Perl语言入门--3--文件读取与写入

“无法识别的类型'员工'。忽略。C:/ .....”从.xml读取输入并将输出写入.xls文件+ perl时出错