0

这与此有关 ->在 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 循环,知道这也可以帮助我解决一些其他问题。谢谢你。

4

1 回答 1

4

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

在第二个中,您没有修改@array. 改变

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

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

或者干脆

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

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

于 2012-10-09T05:10:05.203 回答