Thread Mein bisher kürzestes CGI-Script (27 answers)
Opened by rosti at 2011-08-11 19:25

pq
 2011-08-27 19:54
#151871 #151871
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
2011-08-27T17:18:55 jan
Darf ich fragen, warum Du HTML::Template statt Template-Toolkit benutzt?

ich benutze HTML::Template nicht =)
ich habe auf basis von dessen syntax HTML::Template::Compiled geschrieben.
unterschiede:
  • schneller (allerdings nur in persistenten umgebungen)
  • andere template-delimiter (statt <TMPL_IF foo> und <TMPL_VAR foo> kann man z.b. <%if foo %>, <%= foo %> oder [%if foo %], [%= foo %] schreiben. das ist gerade in HTML lesbarer und gleichzeitig kürzer
  • mehr möglichkeiten, zugriff auf verschachtelte datenstrukturen und objekte ([%= hashref.object.method %] z.b.)
  • expliziter zugriff auf den root vom stash. ich habe in meinen template-parametern oft eine art config im root, also das sieht dann so aus: [%= .config.self_url %] (der punkt am anfang steht für root, obwohl ich im nachhinein den slash besser gefunden hätte, aber nun ist es so).
    in HT kann man nur global_vars einstellen und hat keinen expliziten zugriff auf root, sondern muss sich darauf verlassen, dass an der stelle im stash, an der man sich befindet, kein variablenname ist, den man mit global_vars eigentlich weiter aussen ansprechen wollte.
  • nützliche kleinigkeiten wie [%loop fields join="," %] oder [%each hash %]
  • man kann plugins schreiben

siehe CPAN:HTML::Template::Compiled::Reference

TT bietet womöglich noch mehr, hat mir aber auch schon zu viele moglichkeiten. die syntax von HT(C) folgt überall dem gleichen schema
DELIMITER KOMMANDO VARIABLENNAME DELIMITER
und eventuell noch weiteren attributen foo=bar.
ausserdem mag ich es nicht, dass alles in TT mit [% END %] abgeschlossen wird. in HT(C) sieht man am end-tag sofort, ist es eine loop oder ein if etc.

ausserdem hat HT(C) die option default_escape. wenn ich es für HTML benutze, setze ich default_escape auch immer auf HTML. damit wird automatisch alles escaped und ich brauche keine angst mehr vor versehentlichen XSS haben (denn man vergisst manuelles escapen (in TT filter) öfter mal.
mittlerweile gibt es aber für TT Template::AutoFilter, welches der autor auch auf meine anregung hin geschrieben hat.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem

View full thread Mein bisher kürzestes CGI-Script