【问题标题】:Read and Write to the same file in Perl在 Perl 中读取和写入同一个文件
【发布时间】:2012-10-09 05:05:37
【问题描述】:

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

【问题讨论】:

    标签: perl file-handling


    【解决方案1】:

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

    在第二个中,您没有修改@array 的任何元素。改变

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

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

    或者干脆

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

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

    【讨论】:

      猜你喜欢
      • 2023-03-11
      • 1970-01-01
      • 2018-11-28
      • 1970-01-01
      • 1970-01-01
      • 2011-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多