Comment ecrire un double cote " "

Résolu/Fermé
helmii Messages postés 28 Date d'inscription mercredi 19 juin 2013 Statut Membre Dernière intervention 8 juillet 2013 - 19 juin 2013 à 10:47
[Dal] Messages postés 6044 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 23 janvier 2023 - 19 juin 2013 à 12:22
salut tt le monde j ai un tableau @array et je veux affecter la chaine de caractère entre parenthèse (user "aaa") a $array[12]
voila mon code $array[12]=" user "aaa" ";
Rien ne change pour $array[12] et c'est a cause des deux cote (" ") je pense pck quand je les enleve de tel manière $array[12]=" user aaa "; le changement est effectué!!comment peut on écrire les deux cotes sans qu ils soient considerés des delimiteurs de chaine de caractère??merci pour votre aide

3 réponses

[Dal] Messages postés 6044 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 23 janvier 2023 1 040
Modifié par [Dal] le 19/06/2013 à 12:30
Salut helmii,

1.

Tu peux faire comme suggéré par les réponses précédentes, en échappant les guillemets ("double quotes") contenus à l'intérieur de tes guillemets.

$array[12]=" user \"aaa\" "; 

2.

une autre façon de faire, si ton contenu n'a pas à être interpolé et ne comprend pas d'apostrophes, est simplement d'utiliser l'apostrophe comme délimiteur de chaîne :

$array[12]=' user "aaa" '; 

3.

Si tu dois interpoler le contenu, et que tu as la flemme d'échapper les guillemets, tu peux utiliser qq :

$array[12]= qq( user "$username" ); 

(note : "qq" est pour "double quotes", il y a aussi "q" pour "single quote" qui est équivalent à l'apostrophe, pour ne pas interpoler)

4.

enfin, il y a aussi le heredoc, si tu dois mettre du texte avec des guillements, des apostrophes, des retours à la ligne,...

En non interpolé avec des apostrophes autour du marqueur identifiant la fin du bloc :
$array[12] = <<'EOT';
j ai un tableau @array et je veux affecter la chaine de caractère entre parenthèse (user "aaa") a $array[12]
voila mon code $array[12]=" user "aaa" ";
Rien ne change pour $array[12] et c'est
EOT
;

en version interpolée, avec des guillemets à la place, ou sans rien :
$array[12] = <<EOT;
Ce user s'appelle $prenom, $nom.
Il a $age ans.
Il habite $adresse.
EOT
;

EOT est un exemple, tu peux mettre ce que tu veux. Par convention on met cela en majuscules. Le ; tout seul après le bloc est facultatif, j'aime bien le mettre pour éviter le warning pouvant théoriquement s'afficher comme signalé en fin de cette section de Perldoc.

Sources pour approfondir :

https://perldoc.perl.org/perlop#Quote-and-Quote-like-Operators
https://perldoc.perl.org/perlop#Quote-Like-Operators


Dal
1