J'essaie de modifier le contenu d'un fichier en utilisant Perl.Comment modifier le contenu d'un fichier en utilisant un seul fichier
Le script suivant fonctionne correctement.
#!/usr/bin/perl
use strict;
use warnings;
open(FH,"test.txt") || die "not able to open test.txt $!";
open(FH2,">","test_new.txt")|| die "not able to opne test_new.txt $!";
while(my $line = <FH>)
{
$line =~ s/perl/python/i;
print FH2 $line;
}
close(FH);
close(FH2);
Le contenu de test.txt
:
im learning perl
im in File handlers chapter
La sortie en test_new.txt
:
im learning python
im in File handlers chapter
Si je tente d'utiliser le même fichier poignée pour modifier le contenu du fichier, alors je suis ne pas obtenir la sortie attendue. Ce qui suit est le script qui tente de le faire:
#!/usr/bin/perl
use strict;
use warnings;
open(FH,"+<","test.txt") || die "not able to open test.txt $!";
while(my $line = <FH>)
{
$line =~ s/perl/python/i;
print FH $line;
}
close(FH);
sortie incorrecte dans test.txt
:
im learning perl
im learning python
chapter
chapter
Comment puis-je modifier le contenu du fichier à l'aide de descripteur de fichier unique?
En pratique, vous aurez toujours envie d'écrire dans un autre fichier, même 'perl -i -pe 's/perl/python/i' test.txt' fonctionne de cette manière. Vous pouvez également lire le fichier entier à la fois, apporter des modifications et réécrire le fichier entier sur le même handle. –
@ Сухой27 pouvez-vous expliquer ce que font les options dans la commande i.e -i -pe – kart1657
C'est le fichier ** handle **, pas gestionnaire. – melpomene