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) の要素を変更しています。

2 番目では、 の要素を変更していません@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 に答える