Ich habe meinen eigenen kleinen Perl-Debugger geschrieben, der für jede ausgeführte Zeile den aktuellen Dateinamen und die entsprechende Zeilennummer ausgibt. Wie kann ich feststellen, ob die aktuelle Perl-Anweisung fehlerhafte Daten enthält?Wie überprüft man, ob die aktuelle Perl-Anweisung fehlerhafte Daten enthält?
Ich weiß, es gibt eine Funktion "verdorben" aus dem Modul Scalar :: Util. Es akzeptiert jedoch nur einen Variablennamen als Parameter und keine Perl-Anweisung.
Ich habe Taint an eine lexikalische Variable angehängt, um es zu verfolgen. Wenn ich sehen kann, ob eine Aussage verdorben ist oder nicht, kann ich nur die Zeilen drucken, die meine verdorbene Variable enthalten. Hier ist meine Gewohnheit taint Skript:
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;
Ausnahme abfangen mit eval()? –
Ich habe diesen Code gefunden, der eval verwendet, um die Ausnahme abzufangen, aber ich weiß nicht, wie ich eine Perl-Anweisung an ihn weiterleiten soll. lokale $ @; zurück! eval {eval ("#". substr (join ("", @_), 0, 0)); 1}; – Silence
Was genau möchten Sie testen und warum können Sie keine Variable verwenden? –