Wie setze ich den Taint-Modus in einem Perl-Skript mit einem '#!/Usr/bin/env perl'- Shebang ein?
Frage
Wie setze ich den Makelmodus in einem Perl -Skript mit a ein?
#!/usr/bin/env perl
Shebang?
Lösung
Sie können die Perl5opt -Umgebungsvariable in der Shebang -Linie übergeben:
#!/usr/bin/env PERL5OPT=-T perl
Das scheint mir alles ziemlich rückwärts.
Eine andere Option besteht darin, das Skript im Taint-Modus erneut auszusetzen, wenn Sie feststellen, dass es sich nicht befindet:
#!/usr/bin/env perl
warn 'Taint mode is '.(${^TAINT} ? 'on' : 'off'); # For debugging
exec($^X,'-T',$0,@ARGV) unless ${^TAINT};
# do stuff under taint mode here
Offensichtlich ist dies ein wichtiger Start -up -Leistungsschlag.
Andere Tipps
Da der Taint -Modus nur über die aktiviert werden kann -T
Flagge und env
Akzeptiert keine Flags in einer Shebang -Linie, die beste Option ist es, das Programm durch perl -T script.pl
anstatt das Skript direkt auszuführen.
Wenn Sie unbedingt den Merkmalsmodus im Shebang durchsetzen müssen, könnten Sie eine machen taintperl
Skript irgendwo in Ihrem Weg (zB/usr/local/bin) mit dem folgenden Inhalt:
#!/bin/sh
/usr/bin/env perl -T
Dann in Ihrem Perl -Skript haben
#!/usr/bin/env taintperl