2010-05-04 16 views
0

J'ai déplacé une application Perl CGI d'un hébergeur à un autre. Tout fonctionne correctement, sauf pour le modèle Tookit qui génère l'erreur suivante:Comment puis-je traquer "Échec du processus de modèle: erreur undef" dans la boîte à outils de modèle de Perl?

"Échec du processus de modèle: erreur indéfinie - Cela ne devrait pas se produire dans /usr/lib/perl5/5.8.8/CGI/Carp.pm ligne 314 "

Les modèles fonctionnent correctement sur l'autre hôte Web. J'ai défini l'indicateur DEBUG_ALL lors de la création de l'objet de modèle, mais il ne fournit pas d'informations supplémentaires sur les erreurs, mais seulement des charges de sortie de débogage.

Je ne peux pas publier le modèle de source car il contient beaucoup de contenu spécifique au client. J'ai écrit un modèle de test simple et cela fonctionne bien. Je me demandais juste si quelqu'un avait déjà vu cette erreur ou avait des idées sur le moyen le plus rapide de trouver une solution.

EDIT: Voici un extrait du code qui charge et traite le modèle.

my $vars  = {}; 
$vars->{page_url}   = $page_url; 
$vars->{info}    = $info; 
$vars->{is_valid}   = 0; 
$vars->{invalid_input} = 0; 
$vars->{is_warnings}  = 0; 
$vars->{is_invalid_price} = 0; 
$vars->{output_from_proc} = $proc_output; 
... 

my $file = 'clientTemplate.html'; 

#create ref to hash 
use Template::Constants qw(:debug); 


my $template = Template->new(
{ 
    DEBUG => DEBUG_SERVICE | DEBUG_CONTEXT | DEBUG_PROVIDER | DEBUG_PLUGINS | DEBUG_FILTERS | DEBUG_PARSER | DEBUG_DIRS, 
    EVAL_PERL => 1, 
    INCLUDE_PATH => [ 
     '/home/perlstuff/templates', 
    ], 
} 
); 

$template->process($file, $vars) 
    || die "Template process failed: ", $template->error(), "\n"; 
+0

Pouvez-vous s'il vous plaît poster le code Perl quel modèle d'appel? –

Répondre

4

Vous pouvez essayer d'utiliser Devel::SimpleTrace pour obtenir une trace de la pile de l'endroit où le code est quand il se jette dans l'erreur. Peut-être que cela vous donnera une idée un peu plus précise de ce qui se passe.

+1

Merci Brian, je vais essayer. – FunLovinCoder

+1

Cela a fait l'affaire. La trace de la pile a montré que le problème était avec Text :: Wrap :: wrap appelé depuis Template :: Plugin :: Wrap. J'ai enlevé le plugin (que je peux gérer sans) et tout a commencé à fonctionner. Je n'ai jamais entendu parler de Devel :: SimpleTrace, merci de m'en avoir parlé. – FunLovinCoder