我之前有更多代码填充数组@a_nam。现在我想在abc.txt中显示的行末尾的数组@a_nam中追加元素。我试了一下,但它不起作用。请提供您的意见。 编辑:我试过“+>>”哪个没用。
## 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);
答案 0 :(得分:4)
您打开文件以追加
open my $file, '>>'
但是你试着从文件中读取
while (<$file>)
这是不可能的。打开文件进行读取并写入另一个文件。最后,将旧文件重命名为备份,将新文件重命名为原始文件。
答案 1 :(得分:3)
我不会重复@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