使我的文件可读为Perl或HTML

时间:2010-03-09 04:41:05

标签: html perl comments

本着“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垃圾的浏览器中显示。

编辑:解决了!看我自己的答案

5 个答案:

答案 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::ToolkitHTML::Template。在代码中嵌入HTML或在HTML中嵌入代码是一种痛苦的方法。

答案 4 :(得分:0)

您是否考虑过将 置于HTML

之内?

ASP4一样?

这种方式更容易很多 - 相信我; - )