Schrift
[thread]6966[/thread]

Pfad-Problem??



<< >> 8 Einträge, 1 Seite
Froschpopo
 2005-05-05 23:59
#54638 #54638
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
ich hab nen kleines Problem mit Proc::Background!

Ich will nen Systembefehl absetzen wie man es ja auch mit system() machen kann. Das lässt sich mit Proc::Background prima umsetzen.
Allerdings hab ich jetzt folgendes Problem:
Code: (dl )
1
2
3
4
5
use Proc::Background;

my $path = "C:\Programme\Internet Explorer\iexplore.exe";

my $proc1 = Proc::Background->new($path);

ich erhalte folgende Fehlermeldung:
Code: (dl )
no executable program located at C:\Programme\Internet

Er scheint beim ersten Leerzeichen sofort abzubrechen. Warum?
pKai
 2005-05-06 00:31
#54639 #54639
User since
2005-02-18
357 Artikel
BenutzerIn
[default_avatar]
Code: (dl )
C:\Benutzer\Kai>perl -MProc::Background -e "Proc::Background->new('C:\Programme\Internet Explorer\IEXPLORE.EXE','')"

funktioniert bei mir. Der Witz ist das 2. Argument (da kannst du auch die URL gleich übergeben), die ihn dazu bewegt das Leerzeichen im Pfad nicht krumm zu nehmen.
I sense a soul in search of answers.
Froschpopo
 2005-05-06 00:40
#54640 #54640
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
ist ja komisch... das ist doch eigentlich normal dass leerzeichen bei systembefehlen verwendet werden....
pKai
 2005-05-06 00:46
#54641 #54641
User since
2005-02-18
357 Artikel
BenutzerIn
[default_avatar]
Liegt an der Art, wie new hier sein Argument/seine Argumente interpretiert. Siehe perldoc Proc::Background, ist dort erklärt.
I sense a soul in search of answers.
Dubu
 2005-05-06 01:09
#54642 #54642
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
@Frosch...: Wenn du Backslashes in einem Pfad benutzt, solltest du entweder einfache Anfuehrungszeichen verwenden oder die Backslashes verdoppeln, sonst kommt nur Unsinn heraus.

Entweder ist also dein Code oben nicht echt, oder dir haette auffallen muessen, dass da noch Warnungen kommen:
Code: (dl )
1
2
3
4
5
$ perl -Mwarnings -le 'print "C:\Programme\Internet Explorer\iexplore.exe"'
Unrecognized escape \P passed through at -e line 1.
Unrecognized escape \I passed through at -e line 1.
Unrecognized escape \i passed through at -e line 1.
C:ProgrammeInternet Exploreriexplore.exe
ptk
 2005-05-09 23:01
#54643 #54643
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
[quote=Froschpopo,05.05.2005, 22:40]ist ja komisch... das ist doch eigentlich normal dass leerzeichen bei systembefehlen verwendet werden....[/quote]
Noe. Bei Unix werden traditionell niemals Leerzeichen in Datei- und Verzeichnisnamen verwendet. Und Perl ist sehr unix-lastig.
GwenDragon
 2005-05-10 12:12
#54644 #54644
User since
2005-01-17
14748 Artikel
Admin1
[Homepage]
user image
[quote=ptk,09.05.2005, 21:01][quote=Froschpopo,05.05.2005, 22:40]ist ja komisch... das ist doch eigentlich normal dass leerzeichen bei systembefehlen verwendet werden....[/quote]
Noe. Bei Unix werden traditionell niemals Leerzeichen in Datei- und Verzeichnisnamen verwendet. Und Perl ist sehr unix-lastig.[/quote]
Leerzeichen sind erlaubt, ber der Pfad muss entweder escaped übergeben werden oder als qs// !

Nicht Perl ist U*IX-Lastig sondern Win hat seine eigene bescheuerte Kommandozeilen-Syntax erfunden.\n\n

<!--EDIT|GwenDragon|1115712838-->
ptk
 2005-05-10 13:19
#54645 #54645
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
[quote=GwenDragon,10.05.2005, 10:12][quote=ptk,09.05.2005, 21:01][quote=Froschpopo,05.05.2005, 22:40]ist ja komisch... das ist doch eigentlich normal dass leerzeichen bei systembefehlen verwendet werden....[/quote]
Noe. Bei Unix werden traditionell niemals Leerzeichen in Datei- und Verzeichnisnamen verwendet. Und Perl ist sehr unix-lastig.[/quote]
Leerzeichen sind erlaubt,[/quote]
Unbestritten, aber in der klassischen Shellprogrammierung wird meistens davon ausgegangen, dass keine Leerzeichen vorkommen. Jedenfalls sieht man nicht sehr oft vorsichtig operierende Konstrukte wie
Code: (dl )
find ... -print0 | xargs -0 ...
<< >> 8 Einträge, 1 Seite



View all threads created 2005-05-05 23:59.