Here document
# Here document

Heredoc (conjunción apocópica del inglés 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.

## Shell en Linux

Con Bash podemos usar el comando tr para ejercitar heredoc:

Incluyendo lo anterior, la salida devuelta sería:

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:

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

Lo que, guardado con el nombre pertinente, generará esto en la salida estándar:

## 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 carácter 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 sangría 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.

* Datos: Q1609764

https://en.wikipedia.org/wiki/Here_document

