Ho scritto il mio piccolo debugger Perl che stampa per ogni riga eseguita, il nome del file corrente e il numero di riga corrispondente. Come posso rilevare se l'attuale affermazione di Perl contiene dati contaminati?Come verificare se l'istruzione Perl corrente contiene dati contaminati?
So che esiste una funzione "macchiata" dal modulo Scalare :: Util. Tuttavia accetta solo un nome di variabile come parametro, non un'istruzione Perl.
Ho collegato Taint a una variabile lessicale per tracciarlo. Se riesco a vedere se un'asserzione è macchiata o meno, posso solo stampare quelle righe che contengono la mia variabile contaminata. Ecco il mio script taint personalizzato:
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;
Eccezione di cattura con eval()? –
Ho trovato questo codice che usa eval per catturare l'eccezione, ma non so come passare un'istruzione Perl ad esso. $ locale; ritorno! eval {eval ("#". substr (join ("", @_), 0, 0)); 1}; – Silence
Che cosa vuoi testare esattamente e perché non puoi usare una variabile? –