[Cologne-pm] Sonderzeichen innerhalb ARGV maskieren?

ports ml at portsonline.net
Thu Nov 18 13:09:35 CST 2004


Hallo,

sorry fuer das spaete Reply. Ich war geschaeftlich die Tage in
Muenchen ;)

>Bitte antworten auf Mails an die Liste, sofern sie nicht für die
>Liste offtopic sind, auch wieder an die Liste schicken und nicht
>an den Poster privat. Ein öffentliches Forum ist sinnlos, wenn
>Fragen privat beantwortet werden; erstens hat dann niemand ausser
>dem Fragesteller etwas von der Antwort, zweitens kann niemand
>anders einen zusätzlichen Kommentare beitragen.

Ja, ein klares 'Shame on me' dafuer! Da habe ich mich beim Versenden
meines Postings vertan. Das hat man eben davon, wenn man einfach nur
auf 'reply' drueckt...


>* ports <ml at portsonline.net> [2004-11-14 16:13]:
>> Dann einmal aus einer Cygwin Console unter Windows.
>> 
>> $ perl -w argv.pl argument c:\leer zeichen\test rest
>> 0 - $ARGV[0]: argument
>> 1 - $ARGV[1]: c:leer
>> 2 - $ARGV[2]: zeichentest
>> 3 - $ARGV[3]: rest
>> 
>> Noch mal aus einer Windows Cygwin Console. Diesmal aber mit ".
>> 
>> $ perl -w argv.pl argument "c:\leer zeichen\test" rest
>> 0 - $ARGV[0]: argument
>> 1 - $ARGV[1]: c:\leer zeichen\test
>> 2 - $ARGV[2]: rest
>> 
>> Wie ich also eben durch Zufall[1] entdeckt habe, muessen die Argumente
>> ggf. in " oder ' gesetzt werden.

>Ja. Das hat nichts mit Perl zu tun, sondern ist Sache der Shell
>und verhält sich überall genauso -- ausser in der Windows-Welt,
>die ihre Wurzeln in DOS hat, wo Microsoft, um anders zu sein als
>Unix, von allen denkbaren Zeichen ausgerechnet den Backslash als
>Pfadtrenner ausgesucht hat, der in jedem richtigen System von der
>Shell als Sonderzeichen verstanden wird und zum Entwerten
>(neudeutsch escapen) des nachfolgenden Zeichens dient.

Ja, das 'Problem' haette ich auch nicht Perl in die Schuhe geschoben.
Dann muss der User, der das Script spaeter nutzen moechte, eben seinen
Pfad in ' oder " setzen.

>Du kannst die Backslashes übrigens auch doppeln, dann entwertet
>der erste Backslash den zweiten eines Paares, und es kommt genau
>einer dabei heraus.

Dass das aus der Shell geht haette ich jetzt allerdings nicht vermutet.

>Alternativ kannst du (wenig bekannte Tatsache) auch unter
>DOS/Windows den Slash als Trenner benutzen -- ausser in
>COMMAND.COM. Über CMD.EXE bin ich mir nicht im Klaren. Du kannst
>also auch C:/foo/bar.baz schreiben und dir das Herumgealbere mit
>dem hirntoten Pfadtrenner von WinDOS sparen.

Ja, das habe ich mal bemerkt, als ich wieder aus einer Unix-Shell in
eine Windows Shell gewechselt habe, aber den 'Umzug' noch nicht
verinnerlicht hatte :)

Danke und Gruesse
Ramon



More information about the Cologne-pm mailing list