2012-10-15 9 views
-2

J'ai besoin d'écrire des scripts perl pour une classe qui inclut des boucles for ou foreach. Pour une raison quelconque, même la boucle la plus simple renvoie juste une erreur de 500 serveurs. J'ai vérifié plusieurs fois et le code fonctionne également sur codepad.org, mais je ne sais pas pourquoi il ne fonctionne pas sur le serveur. Je n'ai pas accès aux journaux du serveur, donc je ne peux pas vraiment dire ce qui se passe. Ce sont des boucles très simples qui causent également l'erreur.Serveur CGI pour boucle for for/foreach

@a=(2,3,4); 
    foreach my $r (@a) { 
     print $r; 
    } 

ou

@a=(2,3,4); 
    for ($i = 0; $i <= 2 ; $i++) { 
     print $a[$i]; 

    } 

Toutes les idées?

+0

Je ne sais pas perl, mais pour le second, va-t-il provoquer l'index hors limite – code4j

+0

Non, ça ne va pas. Ce code fonctionne bien sur codepad.org – leonsas

+0

Vous avez besoin de ces journaux. Mais est-ce que les extraits de code ci-dessus représentent chacun l'intégralité d'un script cgi, ou seulement la partie qui provoque le crash? – itsbruce

Répondre

0

Chaque fois que vous écrivez un script CGI, mettre ce en haut pendant que vous travaillez là-dessus:

use CGI::Carp qw(fatalsToBrowser); 

Cela donnera redirect des erreurs dans votre script Perl à la fenêtre du navigateur. Cela devrait vous donner une meilleure idée de ce qui cause votre problème (en supposant qu'il soit au niveau du script).

Il vous permet également d'envoyer facilement vos propres erreurs et déclarations de test au navigateur en utilisant die:

die "testing 1 2 3"; 

Cela peut être utile pour faire le débogage rapide.

+0

Merci! cela m'a permis de voir l'erreur, qui était une déclaration globale 'my' manquante en raison de la manière stricte dont le code est tapé. – leonsas