2012-10-09 60 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