Cómo escribir comillas dobles " "

Resuelto
helmii Mensajes publicados 35 Estado Miembro -  
[Dal] Mensajes publicados 6122 Fecha de registro   Estado Colaborador Última intervención   -
Salut à tous, j'ai un tableau @array et je veux affecter la chaîne de caractères entre parenthèses (user "aaa") à $array[12]
voilà mon code $array[12]=" user "aaa" ";
Rien ne change pour $array[12] et c'est à cause des deux guillemets (" ") je pense parce que quand je les enlève de telle manière $array[12]=" user aaa "; le changement est effectué !! comment peut-on écrire les deux guillemets sans qu'ils soient considérés comme des délimiteurs de chaîne de caractères ?? Merci pour votre aide.

3 respuestas

  1. [Dal] Mensajes publicados 6122 Fecha de registro   Estado Colaborador Última intervención   1 108
     
    Hola helmii,

    1.

    Puedes hacer como se sugiere en las respuestas anteriores, escapando las comillas ("comillas dobles") contenidas dentro de tus comillas.

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

    2.

    Otra forma de hacerlo, si tu contenido no necesita ser interpolado y no incluye apóstrofes, es simplemente usar el apóstrofe como delimitador de cadena:

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

    3.

    Si necesitas interpolar el contenido, y te da pereza escapar las comillas, puedes usar qq:

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

    (nota: "qq" es para "comillas dobles", también hay "q" para "comillas simples" que es equivalente al apóstrofe, para no interpolar)

    4.

    Finalmente, también está el heredoc, si necesitas poner texto con comillas, apóstrofes, saltos de línea,...

    En no interpolado con apóstrofes alrededor del marcador que identifica el final del bloque:
    $array[12] = <<'EOT'; tengo un array @array y quiero asignar la cadena de caracteres entre paréntesis (user "aaa") a $array[12] aquí está mi código $array[12]=" user "aaa" "; Nada cambia para $array[12] y es EOT ;

    en versión interpolada, con comillas en su lugar, o sin nada:
    $array[12] = <<EOT; Este usuario se llama $prenom, $nom. Tiene $age años. Vive en $adresse. EOT ;

    EOT es un ejemplo, puedes poner lo que quieras. Por convención se pone en mayúsculas. El ; solo después del bloque es opcional, me gusta ponerlo para evitar la advertencia que podría teóricamente aparecer como se señaló al final de esta sección de Perldoc.

    Fuentes para profundizar:

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

    Dal
    1
  2. Lapourax Mensajes publicados 2970 Fecha de registro   Estado Colaborador Última intervención   336
     
    Tu debes utilizar la barra invertida
     echo " \" " "

    La \ permite indicar al shell que el carácter no es un metacaracter

    Así que el shell mostrará tu " como cualquier otro carácter =)

    L@pourax
    Si no lo logras a la primera, llámalo versión 1.0
    0
  3. blux Mensajes publicados 2051 Fecha de registro   Estado Moderador Última intervención   3 455
     
    Hola,

    hay que 'desespecializar' tu comilla doble precediéndola con una barra invertida (\), de esta manera: \"

    A+ blux
     "Los idiotas se atreven a todo. Es incluso por eso que los reconocemos"
    0