2012-10-09 132 views
0

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

回答

4

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

第二,你没有修改任何元素@array。更改

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

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

或者干脆

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

注意,使用领带::文件是一个可怕的方式做你正在做什么。

+0

谢谢@ikegami。我也会研究其他解决方案。 – Daanish