2

在此之前我有更多代码填充数组@a_nam。现在我想将数组 @a_nam 中的元素附加到 abc.txt 中下面显示的行的末尾。我尝试了一些东西,但它不起作用。请提供您的意见。编辑:我试过“+>>”,但没有用。

## NAME_id , course, Fall 10 ,spring 11, ........

open my $file, '+>>', 'abc.txt' or die "failed : $!";
while (<$file>) {
    chomp;
    if (/^## NAME(.*)/) {
       print  $file join ",", @a_nam;
    }   
}
close($file);
4

2 回答 2

4

您打开文件进行附加

open my $file, '>>'

但是然后您尝试从文件中读取

while (<$file>)

这是不可能的。打开文件以读取和写入另一个文件。最后,将旧文件重命名为备份,将新文件重命名为原始文件。

于 2013-05-31T21:54:08.173 回答
3

使用简单示例Tie::File

我不会重复@choroba,因为他已经解释了为什么您的示例不起作用。

更新。它现在会将 附加array到行尾,而不是删除它。

use warnings;
use strict;
use Tie::File;
my @a_nam = qw(append some stuff);
my $match = "## NAME";

tie my @lines, 'Tie::File', "abc.txt" or die "failed: $!";

for my $line (@lines){
    if( $line =~ /^($match.*)/ ) {
        $line = $1 . ", " . join ', ', @a_nam;
    }
}
untie @lines;

之前的文件:

1 blah blah
2 ## NAME, foo, bar, baz
3 whatever lines here

之后的文件:

1 blah blah
2 ## NAME, foo, bar, baz, append, some, stuff
3 whatever lines here
于 2013-05-31T22:06:02.127 回答