Je suis débutant en Perl, et j'ai quelques problèmes d'affichage avec
ce script. Le but du script est d'afficher son source:
#!/usr/bin/perl
#ceci est un commentaire
open (hfile, "< ./tuto") #commentaire en bout de ligne
or die ("pas pu ouvrir le fichier");
while ( <hfile> ) {
$a = <hfile>;
#print <hfile>; #cette forme d'affichage ne saute pas de
lignes
print $a; #cette forme d'affichage saute des lignes
}
close hfile;
Pourtant, j'ai tout bien fait comme ils disent dans l'oreilly (mis à
part que le "print $a", c'est une invention à moi, mais bon je n'ai
pas l'impression de faire un truc très original non plus).
Je suis débutant en Perl, et j'ai quelques problèmes d'affichage avec ce script. Le but du script est d'afficher son source:
#!/usr/bin/perl
Quand on développe, il faut toujours mettre l'option -w qui active les avertissements.
#ceci est un commentaire open (hfile, "< ./tuto") #commentaire en bout de ligne
Par convention, les handlers de fichiers s'écrivent en majuscules.
Voici donc un script qui fait ce que tu attends :
#!/usr/bin/perl -w
open HFILE, '< tuto'; print while <HFILE>; close HFILE;
__END__
Jseb
Merci pour la réponse. Je note pour les warnings.
#!/usr/bin/perl -w
open HFILE, '< tuto'; print while <HFILE>; close HFILE;
__END__
A priori, ça revient à ma première forme (print <hfile>, la ligne est commentée dans mon source). Mais pourquoi une récupération de la ligne ($a = <hfile>) suivie de l'affichage de cette récupération (print $a) ne fonctionne pas ?
Merci pour la réponse. Je note pour les warnings.
#!/usr/bin/perl -w
open HFILE, '< tuto';
print while <HFILE>;
close HFILE;
__END__
A priori, ça revient à ma première forme (print <hfile>, la ligne est
commentée dans mon source).
Mais pourquoi une récupération de la ligne ($a = <hfile>) suivie de
l'affichage de cette récupération (print $a) ne fonctionne pas ?
open HFILE, '< tuto'; print while <HFILE>; close HFILE;
__END__
A priori, ça revient à ma première forme (print <hfile>, la ligne est commentée dans mon source). Mais pourquoi une récupération de la ligne ($a = <hfile>) suivie de l'affichage de cette récupération (print $a) ne fonctionne pas ?
Nicolas George
Alex Marandon wrote in message :
Par convention, les handlers de fichiers s'écrivent en majuscules.
(handle, pas handler)
Pour du perl moderne, je conseillerais plutôt d'utiliser l'autovivification des file-handles :
open my $foobar, "<", "foobar" or die "foober: $!n";
Alex Marandon wrote in message <slrnd0elon.qjn.al@dada.alpage.org>:
Par convention, les handlers de fichiers s'écrivent en majuscules.
(handle, pas handler)
Pour du perl moderne, je conseillerais plutôt d'utiliser l'autovivification
des file-handles :
open my $foobar, "<", "foobar" or die "foober: $!n";
Par convention, les handlers de fichiers s'écrivent en majuscules.
(handle, pas handler)
Pour du perl moderne, je conseillerais plutôt d'utiliser l'autovivification des file-handles :
open my $foobar, "<", "foobar" or die "foober: $!n";
Paul Gaborit
À (at) Mon, 07 Feb 2005 14:29:55 +0100, Jseb écrivait (wrote):
Mais pourquoi une récupération de la ligne ($a = <hfile>) suivie de l'affichage de cette récupération (print $a) ne fonctionne pas ?
Ça fonctionne très bien.
Ce qui pose problème, c'est le 'while(<HFILE>)' qui lit une ligne (elle est stockée dans la variable par défaut $_) dont vous ne tenez pas compte.
open HFILE, "< lefichier.txt" or die "Lecture de 'lefichier.txt' impossible: $!n"; while (<HFILE>) { # ici, $_ contient une ligne lue depuis HFILE !!! print $_; } close HFILE;
En écriture Perl plus récente (5.8.x), cela donne :
open my $hfile, "<", "lefichier.txt" or die "Lecture de 'lefichier.txt' impossible: $!n"; while (<$hfile>) { # ici, $_ contient une ligne lue depuis $hfile !!! print $_; } close $hfile;
-- Paul Gaborit - <http://www.enstimac.fr/~gaborit/> Perl en français - <http://www.enstimac.fr/Perl/>
À (at) Mon, 07 Feb 2005 14:29:55 +0100,
Jseb <jseb@alussinan.org> écrivait (wrote):
Mais pourquoi une récupération de la ligne ($a = <hfile>) suivie de
l'affichage de cette récupération (print $a) ne fonctionne pas ?
Ça fonctionne très bien.
Ce qui pose problème, c'est le 'while(<HFILE>)' qui lit une ligne (elle est
stockée dans la variable par défaut $_) dont vous ne tenez pas compte.
open HFILE, "< lefichier.txt"
or die "Lecture de 'lefichier.txt' impossible: $!n";
while (<HFILE>) {
# ici, $_ contient une ligne lue depuis HFILE !!!
print $_;
}
close HFILE;
En écriture Perl plus récente (5.8.x), cela donne :
open my $hfile, "<", "lefichier.txt"
or die "Lecture de 'lefichier.txt' impossible: $!n";
while (<$hfile>) {
# ici, $_ contient une ligne lue depuis $hfile !!!
print $_;
}
close $hfile;
--
Paul Gaborit - <http://www.enstimac.fr/~gaborit/>
Perl en français - <http://www.enstimac.fr/Perl/>
À (at) Mon, 07 Feb 2005 14:29:55 +0100, Jseb écrivait (wrote):
Mais pourquoi une récupération de la ligne ($a = <hfile>) suivie de l'affichage de cette récupération (print $a) ne fonctionne pas ?
Ça fonctionne très bien.
Ce qui pose problème, c'est le 'while(<HFILE>)' qui lit une ligne (elle est stockée dans la variable par défaut $_) dont vous ne tenez pas compte.
open HFILE, "< lefichier.txt" or die "Lecture de 'lefichier.txt' impossible: $!n"; while (<HFILE>) { # ici, $_ contient une ligne lue depuis HFILE !!! print $_; } close HFILE;
En écriture Perl plus récente (5.8.x), cela donne :
open my $hfile, "<", "lefichier.txt" or die "Lecture de 'lefichier.txt' impossible: $!n"; while (<$hfile>) { # ici, $_ contient une ligne lue depuis $hfile !!! print $_; } close $hfile;
-- Paul Gaborit - <http://www.enstimac.fr/~gaborit/> Perl en français - <http://www.enstimac.fr/Perl/>
Jérémy JUST
On 07 Feb 2005 11:54:25 GMT Alex Marandon wrote:
Quand on développe, il faut toujours mettre l'option -w qui active les avertissements.
Et « use strict » qui limite les bêtises.
Le but du script est d'afficher son source: Voici donc un script qui fait ce que tu attends :
#!/usr/bin/perl -w
open HFILE, '< tuto'; print while <HFILE>; close HFILE;
__END__
J'ai plus élégant (le nom du fichier n'apparaît pas en dur):
<<<<< #!/usr/bin/perl -w
use strict ;
open 0 ; print <0> ;
-- Jérémy JUST
On 07 Feb 2005 11:54:25 GMT
Alex Marandon <al@ENLEVER_CECIalpage.org> wrote:
Quand on développe, il faut toujours mettre l'option -w qui active les
avertissements.
Et « use strict » qui limite les bêtises.
Le but du script est d'afficher son source:
Voici donc un script qui fait ce que tu attends :
#!/usr/bin/perl -w
open HFILE, '< tuto';
print while <HFILE>;
close HFILE;
__END__
J'ai plus élégant (le nom du fichier n'apparaît pas en dur):