2011-02-27 15 views
7

He estado tratando de usar Here-documents pero no está funcionando. ¿Qué podría estar mal? ¿Me estoy perdiendo algo obvio?Perl aquí-documento no funciona

Este es el contenido completo del archivo que estoy tratando de correr (no hay espacios o fichas en cualquier lugar):

print<<EOF; 
text 
EOF 

estoy corriendo guardándolo en el bloc de notas o notepad ++ como archivo llamado 3.pl
entonces por entrar en la ventana de DOS en Windows 7 y escribiendo: perl 3.pl me sale este mensaje:

no encontraste cadena de terminador "EOF" anyw aquí antes de EOF en 3.pl línea 1.

+0

¿Cómo está intentando ejecutarlo? –

+1

¿Cómo diablos creas archivos sin nuevas líneas al final de ellos? Eso arruina todo tipo de cosas. – tchrist

Respuesta

23

Asegúrese de que su archivo tenga una línea vacía al final. Esto debería ser de cuatro líneas:

print<<EOF; 
text 
EOF 
#or a comment here works too ;) 
+0

Sí, eso funciona ahora, solo necesitaba una nueva línea en blanco al final. Gracias. ¿Por qué no podría decir eso en Perldoc? – Literat

+10

[En realidad, sí] (http://perldoc.perl.org/perlop.html): 'Si el identificador de terminación está en la última línea del programa, debe asegurarse de que haya una nueva línea después de él; de lo contrario, Perl dará la advertencia No se puede encontrar el terminador de cadena "END" en cualquier lugar antes de EOF .... ' – Konerak

+0

oh ok - parece más bien enterrado y realmente debería estar aquí: http://perldoc.perl.org/perlfaq4 .html # Why-don't-my-% 3c% 3cHERE-documents-work% 3f en el ¿Por qué no funciona mi documento aquí? sección. Además, no se puede encontrar el terminador de cadena "END" en cualquier lugar antes de EOF .... es solo una manera estúpida de decir "No puedo manejar un documento aquí al final de un archivo". Usar diagnósticos no fue de ayuda. Tengo que odiar Perl a veces, pero al menos hay un lugar para compensarlo. – Literat

Cuestiones relacionadas