iam使用perl打印一些数据,但是它给了我错误在EOF之前的任何地方找不到字符串终结符“EOF”
代码为:
#!/usr/local/bin/perl -w
print <<EOF;
hello
EOF
错误:
[Mon May 23 11:32:12 2016] [错误] [client 192.168.10.117] Options指令禁止的目录索引:/ var / www /,referer:http://192.168.10.100/ [Mon May 23 11:32:12 2016] [错误] [客户端192.168.10.117]来自脚本的格式错误的标题。错误的标题=你好:testeof.cgi [Mon May 23 11:32:18 2016] [错误] [client 192.168.10.117] Options指令禁止的目录索引:/ var / www /,referer:http://192.168.10.100/ [Mon May 23 11:32:18 2016] [错误] [客户端192.168.10.117]在/var/www/sandeep/testeof.cgi第2行的EOF之前的任何地方都找不到字符串终结符“EOF”。 [Mon May 23 11:32:18 2016] [错误] [client 192.168.10.117]脚本标题过早结束:testeof.cgi
我尝试将EOF放在单引号中(print&lt;&lt;&lt;'EOF';),如this answer所示,但错误相同。通过此方法打印正在同一目录中的其他文件中工作 我还提到了this question (Why am I getting “Can't find string terminator ”'“ anywhere before EOF at -e line 1” when I try to run a Perl one-liner on Windows?),但在那个问题中OP使用不同的方法来打印和使用linux(UBUNTU)。
请指导我做错的地方?
答案 0 :(得分:1)
您的代码是正确的。
确保您的EOF在一条线上,周围没有空格。
使用引号指定终结符:
print <<_EOF_;
hi $$
_EOF_
print <<"_EOF_";
hi $$
_EOF_
两者完全相同(打印hi 12345
,其中12345是当前流程的流程ID),但第二个与单引号相比更清晰:
print <<'_EOF_';
hi $$
_EOF_
这个会打印hi $$
,因为没有用单引号替换变量。
Web脚本总是需要一个标题(至少对于Apache)。添加此行作为第一个输出行以消除malformed header from script
错误:
print "Content-type: text/html\r\n\r\n";