1=2E je n'arrive pas =E0 retrouver dans mes notes comment effectuer un
print 'WYSIWYG' lorsque le contenu =E0 =E9crire est tr=E8s long c'est =E0
dire sans avoir =E0 taper les caract=E8res de retour par exemple
(l'=E9quivalent de print """ """ en Python, je pr=E9f=E8re Perl =E0 Python
pour la pr=E9cision :) )
2=2E J'essaie d'effectuer quelque chose comme :
my $file_out =3D $ARGV[0] if defined $ARGV[0];
open OUT, defined $file_out ? ">$file_out" : STDOUT
Dans ce cas, il y a une erreur sur les r=E9f=E9rences vu que j'utilise le
pragma strict, mais je ne sais pas si on peut (et comment) utiliser un
filehandle pour STDOUT.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Paul Gaborit
À (at) 19 May 2006 01:14:57 -0700, "ctobini" écrivait (wrote):
J'aurais 2 petites questions :
1. je n'arrive pas à retrouver dans mes notes comment effectuer un print 'WYSIWYG' lorsque le contenu à écrire est très long c'est à dire sans avoir à taper les caractères de retour par exemple (l'équivalent de print """ """ en Python, je préfère Perl à Python pour la précision :) )
Si mes quelques souvenirs de Python sont corrects, vous cherchez un truc du genre :
Les quotes autour de FINSTR indique qu'on ne veut pas interpoler d'éventuelles variables dans le contenu. Si vous souhaitez interpoler le contenu, il faut utiliser les guillements (c'est comme pour les chaînes) :
open OUT, defined $file_out ? ">$file_out" : STDOUT
open my $out, (defined $ARGV[0] ? ">$ARGV[0]", ">&STDOUT") or die "Can't open '$out': $!n";
Ou pour être plus propre (plus sûr) :
my $out; if (defined $ARV[0]) { open $out, ">", $ARGV[0] or die "Can't open '$ARGV[0]' : $!n"; } else { open $out, ">&STDOUT" or die "Can't dup STDOUT: $!n"; }
Ensuite :
print $out "Affichage sur $out...n";
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
À (at) 19 May 2006 01:14:57 -0700,
"ctobini" <ctemp2@free.fr> écrivait (wrote):
J'aurais 2 petites questions :
1. je n'arrive pas à retrouver dans mes notes comment effectuer un
print 'WYSIWYG' lorsque le contenu à écrire est très long c'est à
dire sans avoir à taper les caractères de retour par exemple
(l'équivalent de print """ """ en Python, je préfère Perl à Python
pour la précision :) )
Si mes quelques souvenirs de Python sont corrects, vous cherchez un
truc du genre :
Les quotes autour de FINSTR indique qu'on ne veut pas interpoler
d'éventuelles variables dans le contenu. Si vous souhaitez interpoler
le contenu, il faut utiliser les guillements (c'est comme pour les
chaînes) :
open OUT, defined $file_out ? ">$file_out" : STDOUT
open my $out, (defined $ARGV[0] ? ">$ARGV[0]", ">&STDOUT")
or die "Can't open '$out': $!n";
Ou pour être plus propre (plus sûr) :
my $out;
if (defined $ARV[0]) {
open $out, ">", $ARGV[0]
or die "Can't open '$ARGV[0]' : $!n";
} else {
open $out, ">&STDOUT"
or die "Can't dup STDOUT: $!n";
}
Ensuite :
print $out "Affichage sur $out...n";
--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
À (at) 19 May 2006 01:14:57 -0700, "ctobini" écrivait (wrote):
J'aurais 2 petites questions :
1. je n'arrive pas à retrouver dans mes notes comment effectuer un print 'WYSIWYG' lorsque le contenu à écrire est très long c'est à dire sans avoir à taper les caractères de retour par exemple (l'équivalent de print """ """ en Python, je préfère Perl à Python pour la précision :) )
Si mes quelques souvenirs de Python sont corrects, vous cherchez un truc du genre :
Les quotes autour de FINSTR indique qu'on ne veut pas interpoler d'éventuelles variables dans le contenu. Si vous souhaitez interpoler le contenu, il faut utiliser les guillements (c'est comme pour les chaînes) :
open OUT, defined $file_out ? ">$file_out" : STDOUT
open my $out, (defined $ARGV[0] ? ">$ARGV[0]", ">&STDOUT") or die "Can't open '$out': $!n";
Ou pour être plus propre (plus sûr) :
my $out; if (defined $ARV[0]) { open $out, ">", $ARGV[0] or die "Can't open '$ARGV[0]' : $!n"; } else { open $out, ">&STDOUT" or die "Can't dup STDOUT: $!n"; }
Ensuite :
print $out "Affichage sur $out...n";
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
Nicolas George
Paul Gaborit wrote in message :
open $out, ">&STDOUT" or die "Can't dup STDOUT: $!n";
Ou éventuellement :
$out = *STDOUT;
Les deux ont une sémantique légèrement différente ; je soupçonne que celle de ma version est plus proche de ce que l'on veut en général.
Paul Gaborit wrote in message <r7fyj6pcxx.fsf@vaugirard.enstimac.fr>:
open $out, ">&STDOUT"
or die "Can't dup STDOUT: $!n";
Ou éventuellement :
$out = *STDOUT;
Les deux ont une sémantique légèrement différente ; je soupçonne que celle
de ma version est plus proche de ce que l'on veut en général.
open $out, ">&STDOUT" or die "Can't dup STDOUT: $!n";
Ou éventuellement :
$out = *STDOUT;
Les deux ont une sémantique légèrement différente ; je soupçonne que celle de ma version est plus proche de ce que l'on veut en général.
Paul Gaborit
À (at) Fri, 19 May 2006 10:17:19 +0000 (UTC), Nicolas George <nicolas$ écrivait (wrote):
Paul Gaborit wrote in message :
open $out, ">&STDOUT" or die "Can't dup STDOUT: $!n";
Ou éventuellement :
$out = *STDOUT;
Les deux ont une sémantique légèrement différente ; je soupçonne que celle de ma version est plus proche de ce que l'on veut en général.
Oui. Dans le premier cas, un 'close' sur $out ne fermera pas STDOUT alors que dans le deuxième cas, STDOUT sera aussi fermé. Autre effet : dans le premier cas, on peut changer les couches d'encodage de $out sans toucher à celles de STDOUT. En fait, dans le deuxième cas, $out devient un alias du FileHandle STDOUT alors que dans le premier cas, on a deux FileHandles différents qui envoient vers la même sortie. Le premier cas peut-être utile lorsqu'on veut rediriger STDOUT vers autre chose tout en conservant la possibilité d'écrire vers la sortie orginale (via $out).
Quant à ce qu'"on" veut en général... AMHA, c'est impossible à déterminer : "on" étant par définition indéterminé ;-)
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
À (at) Fri, 19 May 2006 10:17:19 +0000 (UTC),
Nicolas George <nicolas$george@salle-s.org> écrivait (wrote):
Paul Gaborit wrote in message <r7fyj6pcxx.fsf@vaugirard.enstimac.fr>:
open $out, ">&STDOUT"
or die "Can't dup STDOUT: $!n";
Ou éventuellement :
$out = *STDOUT;
Les deux ont une sémantique légèrement différente ; je soupçonne que celle
de ma version est plus proche de ce que l'on veut en général.
Oui. Dans le premier cas, un 'close' sur $out ne fermera pas STDOUT
alors que dans le deuxième cas, STDOUT sera aussi fermé. Autre effet :
dans le premier cas, on peut changer les couches d'encodage de $out
sans toucher à celles de STDOUT. En fait, dans le deuxième cas, $out
devient un alias du FileHandle STDOUT alors que dans le premier cas,
on a deux FileHandles différents qui envoient vers la même sortie. Le
premier cas peut-être utile lorsqu'on veut rediriger STDOUT vers autre
chose tout en conservant la possibilité d'écrire vers la sortie
orginale (via $out).
Quant à ce qu'"on" veut en général... AMHA, c'est impossible à
déterminer : "on" étant par définition indéterminé ;-)
--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
À (at) Fri, 19 May 2006 10:17:19 +0000 (UTC), Nicolas George <nicolas$ écrivait (wrote):
Paul Gaborit wrote in message :
open $out, ">&STDOUT" or die "Can't dup STDOUT: $!n";
Ou éventuellement :
$out = *STDOUT;
Les deux ont une sémantique légèrement différente ; je soupçonne que celle de ma version est plus proche de ce que l'on veut en général.
Oui. Dans le premier cas, un 'close' sur $out ne fermera pas STDOUT alors que dans le deuxième cas, STDOUT sera aussi fermé. Autre effet : dans le premier cas, on peut changer les couches d'encodage de $out sans toucher à celles de STDOUT. En fait, dans le deuxième cas, $out devient un alias du FileHandle STDOUT alors que dans le premier cas, on a deux FileHandles différents qui envoient vers la même sortie. Le premier cas peut-être utile lorsqu'on veut rediriger STDOUT vers autre chose tout en conservant la possibilité d'écrire vers la sortie orginale (via $out).
Quant à ce qu'"on" veut en général... AMHA, c'est impossible à déterminer : "on" étant par définition indéterminé ;-)
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
ctobini
Bonjour, merci à tous pour vos réponses et désolé de vous répondre tardivement.
C'est parfait, j'ai pu avec vos indications scripter rapidement ce que je voulais faire, et retrouver les différents chapitres se rapportant au 'filehandles' dans mon bouquin sur Perl (les pages concernées n'étaient pas au chapitre 'filhandles' :) )
Merci encore et bonne journée à tous.
C. Tobini
Bonjour, merci à tous pour vos réponses et désolé de vous répondre
tardivement.
C'est parfait, j'ai pu avec vos indications scripter rapidement ce que
je voulais faire, et retrouver les différents chapitres se rapportant
au 'filehandles' dans mon bouquin sur Perl (les pages concernées
n'étaient pas au chapitre 'filhandles' :) )
Bonjour, merci à tous pour vos réponses et désolé de vous répondre tardivement.
C'est parfait, j'ai pu avec vos indications scripter rapidement ce que je voulais faire, et retrouver les différents chapitres se rapportant au 'filehandles' dans mon bouquin sur Perl (les pages concernées n'étaient pas au chapitre 'filhandles' :) )