сделать мой файл читаемым как Perl или HTML - PullRequest
5 голосов
/ 09 марта 2010

В духе « Perl Preamble », где скрипт работает правильно, независимо от того, выполняется ли он интерпретатором сценария оболочки или интерпретатором 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 ...

Я хотел бы иметь возможность работать с HTML, который находится внутри скрипта Perl, и проверять его с помощью веб-браузера, и запускать скрипт только тогда, когда мне нужен HTML. Для этого мне нужно, чтобы файл был открыт как в виде HTML-файла, так и в виде сценария Perl.

Я пробовал разные трюки с комментариями Perl и HTML-комментариями, но не могу получить его совершенно безупречно. Файл в целом не должен быть «строго законным» HTML (хотя встроенный документ должен быть) ... просто должен отображаться в браузере без видимого (или минимального) мусора Perl.

РЕДАКТИРОВАТЬ: Решено! Смотрите мой собственный ответ

Ответы [ 5 ]

6 голосов
/ 10 марта 2010

Прочтите это и плачьте, мистер @ Аксеман ... Теперь я представляю вам пустой набор :

</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 ...

# -->
5 голосов
/ 09 марта 2010

Может быть, это работа для 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

Тогда страница должна отображаться очень хорошо.

5 голосов
/ 09 марта 2010

Это звучит как путь к боли. Попробуйте сохранить HTML-код в отдельном файле и прочитать его в скрипте.

3 голосов
/ 09 марта 2010

Звучит так, будто вы хотите шаблонное решение, например Template :: Toolkit или HTML :: Template . Встраивание HTML в ваш код или встраивание кода в ваш HTML - это рецепт боли.

0 голосов
/ 09 марта 2010

Рассматривали ли вы возможность размещения Perl внутри HTML?

Как ASP4 делает?

Это много так проще - поверь мне; -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...