本着“Perl Preamble”的精神,无论是由shell脚本解释器还是Perl解释器执行脚本都能正常工作......
我有一个Perl脚本,其中包含一个嵌入的HTML文档(作为“heredoc”),即:
#!/usr/bin/perl
... some Perl code ...
my $html = <<'END' ;
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
... more HTML ...
</HTML>
END
... Perl code that processes $html ...
我希望能够处理Perl脚本中的HTML并使用Web浏览器检查它,并且只在HTML是我想要的方式时运行脚本。为此,我需要将文件作为HTML文件和Perl脚本打开。
我已经尝试了Perl评论和HTML评论的各种技巧,但无法让它变得非常完美。整个文件不一定是“严格合法的”HTML(尽管嵌入的文档应该是)...只能在没有(或最小)Perl垃圾的浏览器中显示。
编辑:解决了!看我自己的答案
答案 0 :(得分:6)
阅读并哭泣@Axeman先生......我现在向你呈现空集:
</dev/fd/0 eval 'exec perl -x -S $0 ${1+"$@"}' #> <!--
#!perl
... some Perl code ...
my $html = << '<!-- END' ; # -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
... more HTML ...
</HTML>
<!-- END
... Perl code that processes $html ...
# -->
答案 1 :(得分:5)
这听起来像是痛苦的道路。考虑将HTML存储在单独的文件中并在脚本中读取它。
答案 2 :(得分:5)
这可能是Markup::Perl
的工作:
# don't write this...
print "Content-type: text/html;\n\n";
print "<html>\n<body>\n";
print "<p>\nYour \"lucky number\" is\n";
print "<i>", int rand 10, "</i>\n</p>\n";
print "</body>\n</html>\n";
# write this instead...
use Markup::Perl;
<html><body><p>
Your "lucky number" is
<i><perl> print int rand 10 </perl></i>
</p></body></html>
您也可以删除use Markup::Perl
行并像
perl -MMarkup::Perl my_page_with_embedded_perl.html
然后页面应该很好地呈现。
答案 3 :(得分:3)
听起来像你想要一个模板解决方案,例如Template::Toolkit或HTML::Template。在代码中嵌入HTML或在HTML中嵌入代码是一种痛苦的方法。
答案 4 :(得分:0)