J'essaie d'appeler un module externe Perl dans un fichier Toolkit de modèle .tt. Le module que je veux utiliser est Cela fonctionne bien, mais je me demandais s'il y a un moyen de util code>, et je veux appeler
util :: prettify_date code>. J'ai pu inclure ce module à l'aide de l'interface du plugin de Toolkit de modèle: I Configurez la fonction de charge, de nouvelle et d'erreur (comme décrit ici: http://template-toolkit.org/docs/modules/template/plugin.html ) et incluez-le en utilisant
[% utilisé util%] code>. p>
Utiliser des modules CODE> PERL dans la boîte à outils de modèle sans avoir à repousser-ify. Le problème principal avec la fabrication de plugins est que je dois apporter toutes les fonctions dans
util code> orientées objet (c.-à-d. Accepte Self-auto comme premier argument), ce qui n'a pas vraiment de sens. P>
3 Réponses :
Avez-vous essayé Maintenant, je voudrais écrire un plugin qui relais, disons, un Utiliser code> ing le module dans un
[% perl%] code>
bloc? myorg :: plugin :: util-> prettify_date CODE> TO
UTIL :: PRETTIFY_DATE CODE> Après avoir débarrassé du premier argument. Vous pouvez également automatiser la création de ces méthodes: P>
my @to_proxy = qw( prettify_date );
sub new {
my $class = shift;
{
no strict 'refs';
for my $sub ( @to_proxy) {
*{"${class}::${sub}"} = sub {
my $self = shift;
return "My::Util::$sub"->( @_ );
}
}
}
bless {} => $class;
}
Vous pouvez également passer des fonctions (c.-à-d. Subroutines) au modèle comme celui-ci:
======================================== Hello my name is Barry, how are u today? The ultimate answer to life is 42 ========================================
Le moyen le plus simple et le plus dangereux d'accomplir est d'utiliser un [% Perl%] code> bloquer et forcer l'évaluation à survenir dans l'espace de nom code> code>
[% PERL %]
package main;
# You can now use any variables and subroutines as though this were in the main namespace
[% END %]