HTML::Template::Compiled (kurz HTC) ist sehr schön und nett, ein Danke an @pq, aber… manchmal hat das Modul unbeabsichtigt Fallen oder ich bin zu dusselig.
Also mein Problem: da wirft der Parser eine Fehlermeldung aus, die kaum verständlich ist und zudem nicht wirklich den Fehler zeigen kann.
Hier:
QuoteHTML::Template::Compiled::Parser : Syntax error in <TMPL_*> tag at :2 near '<?IF expr=" comdata.status eq '-'" ?>????
<?E...'
Wer errät, wo das Problem ist?
OK, ich weiß es ja mittlerweile auch. ;-)
Aber ich habe mir heute stundelang die Haare gerauft, weil ein Template nicht mehr wollte.
Dabei arbeite ich nicht zum ersten Mal mit HTC.
Dann hab ich das eingegrenzt mit einem Schnippsel:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
use strict;
use warnings;
use 5.024;
use utf8;
use HTML::Template::Compiled;
my $htc = HTML::Template::Compiled->new(
filehandle => *DATA,
tagstyle => [ qw(+php), ],
);
my $data = {
comdata => {
test => 11,
status => '-',
}
};
$htc->param($data);
print $htc->output;
__DATA__
COMDATA Status: <?= comdata.test ?>
comdata.status <?IF expr=" comdata.status eq '-'" ?>????
<?ELSE?>
OK
<?/IF?>
Lasst es mal im Terminal laufen.
HTML::Template::Compiled::Parser : Syntax error in <TMPL_*> tag at :2 near '<?IF expr=" comdata.status eq '-'" ?>????
<?E...'
Tja, böse Konfigurationsfalle!
Ohne
use_expressions => 1 in den Parametern für
new, wirft das Programm dies aus:
HTML::Template::Compiled::Parser : Syntax error in <TMPL_*> tag at :2 near '<?IF expr=" comdata.status eq '-'" ?>????
<?E...'
Der Parser sollte eigentlich schon wissen, wo die Macke war, dass es an
expr lag, etwas gesprächiger sein.
@pq
Oder geht sowas nicht, ist es schwierig zu implementieren, aus Zeitmangel, die gesprächige Ausgabe des Fehlers? Oder überseh’ ich eine Möglichkeit HTC gesprächiger zu machen?
Ist nicht als Kritik gemeint.
Ich würde es nur gern wissen wie ich in Zukunft solche Fallen vermeide.
Last edited: 2022-11-03 10:42:01 +0100 (CET)