在Perl中读取和写入同一文件

时间:2012-10-09 05:05:38

标签: perl file-handling

这是继续这个 - > 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循环,知道这可以帮助我解决一些其他问题。 谢谢。

1 个答案:

答案 0 :(得分:4)

在第一个代码段中,您要修改@array的元素(通过别名$line)。

在第二种情况下,您不会修改@array的任何元素。变化

$line = $array[$i];
$line = "<$line>";

$line = $array[$i];
$line = "<$line>";
$array[$i] = $line;

或只是

$array[$i] = "<$array[$i]>";

请注意,使用Tie :: File是一种糟糕的方式来做你正在做的事情。