print caratere special - Perl - Programmation
Marsh Posté le 06-11-2009 à 15:30:26
Sauf que ça marche pas chez moi, j'ai testé: print 'test\'e'; et print "test\'e"; ca donne dans les deux cas: test'e
Par contre, ce qui marche, c'est print q{test\'e}; qui donne test\'e
Je dois dire que je suis un poil interloqué, car normalement q{...} et '...' sont équivalents.
Peut être un bug de ma version (ActiveState: This is perl, v5.10.1 built for MSWin32-x86-multi-thread), j'aimerais savoir ce qu'il en est avec une version Unix de la 5.10
Le truc a retenir, c'est qu'on peut utiliser q{....} (s'il n'y a pas de } dans ce qu'on quote). Ca marche aussi avec d'autres caractères non alphanumériques: q!...! ou q=...=
A+,
Marsh Posté le 06-11-2009 à 15:39:44
Sauf que quand même, q{\'} marche mais pas q{\}.
C'est un peu nébuleux ce truc.
Marsh Posté le 06-11-2009 à 15:47:29
J'ai compris: Parce que dans un environnement q{...}, \} est la seule combinaison qui est reconnue comme un échappement.
Si tu fais print q{\}}; ca donnera }
C'est d'ailleurs pour ça que print 'test\'e'; marche, et ne plante pas parce qu'on a trois '
le \' est la seule combinaison reconnue comme un échappement dans ce contexte, est est interprété comme un ' ce qui explique le test'e obtenu en sortie.
Donc en fait, l'environnement "sans interprétation" en a en fait une, la combinaison \ et le caractère délimiteur de fin de quote, interprété comme un simple caractère de la chaine et non comme un délimiteur.
A+,
Marsh Posté le 04-11-2009 à 15:40:16
Bonjour,
Comment peut on indiquer à perl de ne pas interpréter ce qu'il a à écrire dans un fichier.
Exemple: je fait
print "test\'e";
il m'ecrit uniquement
test'e
Merci de votre aide.