Чтение и запись в один и тот же файл в Perl

Это продолжение этого ->Чтение и запись в файл в 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 выше, зная, что это может помочь мне решить и некоторые другие проблемы. Спасибо.


person Daanish    schedule 09.10.2012    source источник


Ответы (1)


В первом фрагменте вы изменяете элементы @array (через псевдоним $line).

Во втором вы не изменяете никакие элементы @array. Изменять

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

to

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

или просто

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

Обратите внимание, что использование Tie::File — ужасный способ делать то, что вы делаете.

person ikegami    schedule 09.10.2012
comment
Спасибо @ikegami. Я также рассмотрю другие решения. - person Daanish; 09.10.2012