2012-10-09 7 views
0

Ceci est en continuité avec cette ->Read and Write to a file in perl question.Lire et écrire dans le même fichier en Perl

Le code ci-dessous fonctionnait parfaitement bien pour lire et écrire dans le même fichier:

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; 

Mais quand je l'ai fait ce qui suit les changements ne sont pas reflétées dans le fichier:

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; 

Quelqu'un peut-il aidez-moi avec ce problème? Oui, je sais que je peux utiliser la boucle for ci-dessus, sachant que cela peut m'aider à résoudre d'autres problèmes aussi. Merci.

Répondre

4

Dans le premier extrait, vous modifiez les éléments de @array (via l'alias $line).

Dans la seconde, vous ne modifiez aucun élément de @array. Changer

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

à

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

ou simplement

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

Notez que l'utilisation Tie :: File est un moyen terrible de faire ce que vous faites.

+0

Merci @ikegami. Je vais regarder dans les autres solutions aussi. – Daanish

Questions connexes