对于我的程序,我试图用新创建的值替换外部文件中特定哈希的值。外部文件具有从键中分隔的值,并且我已从外部文件中读取了哈希值。我一直在网上寻找,这是我能找到怎样做的最接近的方式,但它似乎不起作用。
open(IN, ">>$file") || die "can't read file $file";
while (<IN>) {
print IN s/$hash{$key}/$newvalue/;
}
close (IN)
我不太确定我在这个公式中缺少什么。
答案 0 :(得分:4)
Tie::File可以为您解决此问题。
use Tie::File;
tie @array, 'Tie::File', $file or die "Could not tie $file: $!";
for (@array) {
s/$hash{$key}/$newvalue/;
}
untie @array;
答案 1 :(得分:1)
http://www.sthomas.net/roberts-perl-tutorial.htm/ch13/Modifying_a_File_with___I
google on“$ INPLACE_EDIT perl”
答案 2 :(得分:0)
您正在尝试读取和写入同一个文件,但这不起作用。你必须阅读,替换然后写入另一个文件。之后,如果你真的想要一个文件,你可以用你刚写的那个替换输入文件。
答案 3 :(得分:0)
这不会有效,但它应该有效,除非我的perl-fu很糟糕:
open(IN, "<<$file") || die "can't read file $file";
open(OUT, ">>${file}.tmp") || die "can't open file $file";
while (<IN>) {
print OUT s/$hash{$key}/$newvalue/;
}
close(IN);
close(OUT);
exec("mv ${file}.tmp $file");
可能有一个命令要在perl中为你做这个动作,但我不是一个perl家伙。