Comment ecrire un double cote " "

Résolu
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

  1. Contributeur
    Tu dois utiliser le back slash
    Ex :
      echo " \" "
     "

    Le \ permet de signaler au shell que le caractère n'est pas un meta-caractère

    Bref le shell va afficher ton " comme n'importe quel caractère =)

    L@pourax
    Si vous ne réussissez pas du premier coup, appelez ça version 1.0
    0
    1. Modérateur
      Salut,

      il faut 'déspécialiser' ta double-quote en la faisant précéder d'un backslash (\), de cette manière : \"

      A+ blux
       "Les cons, ça ose tout.
      C'est même à ça qu'on les reconnait"
      0
      1. Contributeur
        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