J'ai écrit mon propre petit débogueur Perl qui imprime pour chaque ligne exécutée, le nom de fichier actuel et le numéro de ligne correspondant. Comment puis-je détecter si l'instruction Perl actuelle contient des données corrompues?Comment vérifier si l'instruction Perl actuelle contient des données corrompues?
Je sais qu'il existe une fonction "corrompue" du module Scalar :: Util. Cependant, il n'accepte qu'un nom de variable en tant que paramètre, pas une instruction Perl.
J'ai attaché Taint à une variable lexicale pour le tracer. Si je suis en mesure de voir si une déclaration est entachée ou non, je ne peux imprimer que les lignes contenant ma variable contaminée. Voici mon script taint personnalisé:
Taint.pl
use strict;
use warnings;
use Taint::Runtime qw(taint_start taint);
taint_start();
my $data = taint("abc"); --> interesting
my $noise = "noise"; --> not interesting
my $evil = $data . " evil"; --> interesting
Debugger.pl
sub DB::DB{
my($package, $filename, $line) = caller;
print $filename . ":" . $line . " ";
scalar <STDIN>;
}
1;
Exception de saisie avec eval()? –
J'ai trouvé ce code qui utilise eval pour attraper l'exception, mais je ne sais pas comment lui passer une instruction Perl. local $ @; retour! eval {eval ("#". substr (join ("", @_), 0, 0)); 1 }; – Silence
Qu'est-ce que vous voulez exactement tester, et pourquoi vous ne pouvez pas utiliser une variable? –