这是继续这个 - > Read and Write to a file in perl问题。
以下代码适用于读取和写入同一文件:
use Tie::File;
use strict;
use warnings;
my $filename = "out.txt";
my @array;
tie @array, 'Tie::File', $filename
or die "can't tie file \"$filename\": $!";
for my $line (@array) {
$line = "<$line>";
}
untie @array;
但是,当我执行以下操作时,更改未反映在文件中:
use Tie::File;
use strict;
use warnings;
my $filename = "out.txt";
my @array;
tie @array, 'Tie::File', $filename
or die "can't tie file \"$filename\": $!";
my $len = @array;
for ($i = 0; $i < $len ; $i++) {
$line = $array[$i];
$line = "<$line>";
}
untie @array;
有人可以帮我解决这个问题吗? 是的我知道我可以使用上面的for循环,知道这可以帮助我解决一些其他问题。 谢谢。
答案 0 :(得分:4)
在第一个代码段中,您要修改@array
的元素(通过别名$line
)。
在第二种情况下,您不会修改@array
的任何元素。变化
$line = $array[$i];
$line = "<$line>";
到
$line = $array[$i];
$line = "<$line>";
$array[$i] = $line;
或只是
$array[$i] = "<$array[$i]>";
请注意,使用Tie :: File是一种糟糕的方式来做你正在做的事情。