- Here document
-
Heredoc (conjunción apocópica de Here-document o Documento-aquí en español) es una forma de representar cadenas en los lenguajes de programación o shells de algún Sistema Operativo basado en Unix. Los lenguajes de programación que más se valen de este son PHP y Ruby. La diferencia entre Heredoc y otras formas más tradicionales de mandar cadenas de caracteres a la salida estándar es que con heredoc se pueden transmitir grandes cadenas de texto con poco esfuerzo; mientras que con instrucciones simples como printf() de C y echo() de PHP hay que mandar el texto línea por línea (con un formato a veces complejo en C), incluyendo comillas, especificaciones, punto y coma, el nombre de la instrucción y a veces especificaciones, por cada línea o fragmento de ella que se desee publicar, heredoc nos da la oportunidad de mostrar extensiones mayúsculas de párrafos con una sola instrucción o un solo procedimiento.
El texto (generalmente párrafos) creados con instrucciones heredoc incluyen y respetan la indentación, los espacios y caracteres de nueva línea del texto y otros atributos difíciles de incluir con texto simple, como las comillas dobles. Generalmente la sintaxis para programar una salida con heredoc es usando alguna instrucción seguida de <<, después un identificador para el texto, siguiendo con una línea nueva y el texto mismo y, finalmente, el cierre de la instrucción.
Contenido
Shell en Linux
Con Bash podemos usar el comando
tr
para ejercitar heredoc:$ tr a-z A-Z <<IDENTIFICADOR > Hola a > todos, espero que > "se encuentren muy bien"; > Saludos!! > IDENTIFICADOR
Incluyendo lo anterior, la salida devuelta sería:
HOLA A TODOS, ESPERO QUE "SE ENCUENTREN MUY BIEN"; SALUDOS!!
Y como se puede apreciar, la operación de incluir caracteres de nueva línea, comillas dobles, signos de admiración y punto y coma se vio trazada de manera sencilla.
PHP
Desde su versión 4.0, PHP permite el uso de heredoc en los documentos como implementación a la instrucción echo(); el formato es el siguiente:
<?php echo <<<EOT con este modo de uso de la función echo podemos escribir texto en varias líneas... o varios párrafos si se desea "incluyendo elementos tales como 'coma', 'punto y coma', 'comillas dobles' y lo que es mejor: permite la conjugación de $VARIABLES. Adecuado para citas textuales grandes,
versos o lotes de código en HTML. EOT; ?>Sobra decir que la salida estándar será ese párrafo pero con el texto "" (sin texto) en sustitución a $VARIABLES a menos que tenga un valor asignado. EOT resulta ser el identificador (ID) del párrafo y se debe indicar en una nueva línea al final y con un punto y coma que indicará el final del lote de texto.
Ruby
El siguiente código es una implementación de heredoc en Ruby
puts <<LISTA_DEL_SUPER Lista del supermercado ------------ 1. Pan* 2. Huevos* 3. Frutas* 4. Trigo 5. Jugo * Ración doble LISTA_DEL_SUPER
Lo que, guardado con el nombre pertinente, generará esto en la salida estándar:
$ ruby grocery-list.rb Lista del supermercado ------------ 1. Pan* 2. Huevos* 3. Frutas* 4. Trigo 5. Jugo * Ración doble
Notas finales
Heredoc brinda muchas facilidades a los programadores cuando se trata de escribir líneas de texto extensas, sin embargo y pese a que provee cierta fidelidad al momento de plasmar el texto, no es muy usado por la gran mayoría de los programadores, puesto que la necesidad de incluir el caracter n como nueva línea lo hace poco portable en Windows, quien usa la combinación CRLF al presionar la tecla intro. Además es poco confiable si se trata de mostrar grandes textos al público puesto que un error en la sintaxis o en los identificadores podría hacer que no se muestre.
En PHP es mejor incluir el texto en HTML puro para evitar posibles conflictos y defectos de indentación o legibilidad, además, hablando en un sentido general, el mostrar cadenas de texto largas en un portal dinámico (de los que abundan en la Web 2.0) es mejor extraerlos de archivos o bases de datos y confiarlo a las variables; es cierto que a veces simplemente se requiere de párrafos cortos y fijos, para eso está heredoc, pero su uso debe ser con moderación.
Categorías:- Partes de programas
- Lenguajes de programación
Wikimedia foundation. 2010.