Esto se llama here-doc. Básicamente toma todo de la siguiente línea hasta una línea de marcador final y lo presenta como entrada estándar al programa que está ejecutando. La línea de marcador final está controlada por el texto que sigue al <<
.
A modo de ejemplo, en bash
(que estoy más familiarizado con que Perl), el comando:
cat <<EOF
hello
goodbye
EOF
se ejecutará cat
y luego enviar dos líneas a su entrada estándar (el hola y adiós líneas) Perl también tiene esta característica aunque la sintaxis es ligeramente diferente (como era de esperar, dado que es un idioma diferente). Aún así, está lo suficientemente cerca para que la explicación aún se mantenga.
Wikipedia tiene an entry for this que probablemente hubieras encontrado si hubieras sabido que se llamaba aquí-doc, pero de lo contrario sería bastante difícil de resolver.
En sus casos particulares, no hay diferencia entre el uso de EOF
y PETE
, hay una relación entre el marcador heredoc (el bit siguiente <<
) y el extremo de entrada estándar.
Por ejemplo, si uno de sus líneas de entrada fue EOF
, que no podía realmente usar eso como un marcador desde la entrada estándar se daría por terminado antes de tiempo:
cat <<EOF
This section contains the line ...
EOF
but then has more stuff
and this line following is the real ...
EOF
En ese caso, podría utilizar PETE
(o cualquier otra cosa que no aparezca en el texto en su propia línea).
Existen otras opciones, como utilizar comillas alrededor del marcador (para que la sangría se vea mejor) y el uso de comillas simples o dobles para controlar la sustitución de variables.
Si va a la página perlop
y busca <<EOF
, es de esperar que todo quede claro.