[Vienna-pm] Escapen von Shellparametern
Gerfried Fuchs
alfie at ist.org
Mon Apr 28 07:16:32 PDT 2008
Am Montag, den 28.04.2008, 15:34 +0200 schrieb Stefan Weiss:
> Soweit ich das gesehen habe, ist die gängige Meinung im Usenet und in
> den Messageboards, dass ein verläßliches Escapen von Parametern, die der
> Shell übergeben werden (mit system() oder Backticks oä) sehr komplex bis
> kaum möglich ist. Leider ist es nicht immer (einfach) möglich, system()
> mit einer Liste von Parametern zu verwenden, und das Escapen Perl zu
> überlassen.
>
> Zum Beispiel in diesem Fall:
>
> my $cmd = "faxjob --from $from --faxnum $num (usw)";
> print LOG "$cmd\n";
> my $result = `$cmd`;
Witzig, ich hab auch etwas mit faxen in perl geschrieben. Aber: es gibt
doch genau dafür quotemeta():
#v+
my $cmd = "faxjob --from ".quotemeta($from)
." --faxnum ".quotemeta($num)
." (usw)";
#v-
> Ich verwende jetzt stattdessen diese Funktion, um Dinge wie $from und
> $num zu escapen:
>
> sub esc {
> local $_ = shift;
> s#([^\w./+-])#\\$1#g;
> return $_;
> }
Siehe oben, die Funktion genau dafür gibt's bereits. ;)
Bis dann,
Rhonda
More information about the Vienna-pm
mailing list