Schrift
[thread]7932[/thread]

sonderzeichen in dateipfad escapen

Leser: 1


<< |< 1 2 3 >| >> 23 Einträge, 3 Seiten
vayu
 2006-04-30 15:51
#65397 #65397
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich weiss hört sich irgendwie leicht an, aber ich habs bisher ned hinbekommen.

ich hab mir ein kleines script geschrieben, mit dem ich stinknormal n ordner nach nem searchpattern absuche. kann sofern gewünscht auch ne extension mitgeben.

soweit so gut, das funzt. nu habbich noch n switch eingebaut, der mir die gefundenen dateien einfach startet (bei suche nach mp3 werden mir die gefundenen mp3's gleich im winamp enqueued.

aufruf im script per:

Code: (dl )
system($filename);


so, nun gibts allerdings verzeichnisse bei mir unter windows, die ein Leerzeichen, &, #, etc. im pfad haben. und obwohl ich vorm system-aufruf " " um den aufruf packe, findet er das verzeichniss nicht. wenn ich die mp3 ganz normal in der kommandozeile eingebe mit " " herum wird die datei aufgerufen.

hat jemand ne ahnung wie ich dies problem lösen könnte?

danke im voraus
Matze
 2006-04-30 15:56
#65398 #65398
User since
2005-08-29
222 Artikel
BenutzerIn
[Homepage] [default_avatar]
Ich nehme an in $filename steht auch noch der Pfad drin ?

Escapen geht so:(Für die Backslahes)
Code: (dl )
$filename =~ s/\//\\/g;


Wenn du alle Sonderzeichen escapen möchtest, machst du es
am besten so:
Code: (dl )
$filename = "\Q$filename\E";


MfG. Matze
Mit freundlichen Grüßen: Matze
pq
 2006-04-30 16:11
#65399 #65399
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=Matze,30.04.2006, 13:56]Wenn du alle Sonderzeichen escapen möchtest, machst du es
am besten so:
Code: (dl )
$filename = "\Q$filename\E";
[/quote]
naja, dann kann man auch gleich quotemeta() verwenden.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Matze
 2006-04-30 16:16
#65400 #65400
User since
2005-08-29
222 Artikel
BenutzerIn
[Homepage] [default_avatar]
quotemeta() ?
Das kannte ich noch gar nicht...

MfG. Matze
Mit freundlichen Grüßen: Matze
vayu
 2006-04-30 16:37
#65401 #65401
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
ah nach sowas habe ich gesucht, danke pq!
vayu
 2006-05-01 00:43
#65402 #65402
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
so neues problem.

wollte das ganze ding dann per PAR in ein executable verwandeln. also den WIKI artikel gelesen und es so gemacht wie es dort stand.

Quote
pp -o bla.exe bla.pl


programm lief bis zu dem zeitpunkt wo ich ein fork() mache.
fork() funktioniert erst seit perl 5.8.6 (was ich installiert habe) richtig kann das sein?

weil die fehlermeldung die ich kriege ist:

Quote
AppName: lookandload.exe AppVer: 0.0.0.0 ModName: perl58.dll
ModVer: 5.8.0.802 Offset: 0006acd9


verwendet PAR 5.8.0? wenn ich ein

require 5.8.6

in mein script setze gibts ne meldung bei programmaufruf, dass dies nur version 5.8.0 sei ...

kann man PAR beibringen die 5.8.6 zu benutzen, oder gibts irgendwo ne par version die dies tut? hab 0.92 über cpan installiert
jan
 2006-05-01 00:53
#65403 #65403
User since
2003-08-04
2536 Artikel
ModeratorIn
[Homepage] [default_avatar]
unter windows? da gibt's allgemein kein fork.

einzige chance da wäre dann, mit threads zu arbeiten. ist aber relativ speicherhungrig, wenn ich mich erinnere.
vayu
 2006-05-01 01:21
#65404 #65404
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
unter windows, und das script läuft ja mit fork(), nur halt nimmer nachdem ich ein .exe drausgemacht hab

mein problem ist halt folgendes, ich suche verzeichnisse nach nem search pattern ab und will die gefundenen dateien gleich in winamp enqueuen.

also mach ich ein system("dateiname.mp3");

da wartet er aber jedesmal darauf das winamp beendet wird, anstatt weiterzumachen und den evtl. nächsten fund auch noch zu enqueuen.

also dacht ich ich fork und mach im child-prozess ein einfaches exec();

das funktioniert jetzt auch wunderbar.

nur als .exe halt nicht\n\n

<!--EDIT|vayu|1146432226-->
jan
 2006-05-01 02:41
#65405 #65405
User since
2003-08-04
2536 Artikel
ModeratorIn
[Homepage] [default_avatar]
mh? hat activestate das pseudofork mittlerweile gut lauffähig?

ansonsten:
CPAN:Proc::Background
vayu
 2006-05-01 03:21
#65406 #65406
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
naja zumindest läuft fork bei mir so :) das Proc::Background werd ich mir morgen mal anschauen.
<< |< 1 2 3 >| >> 23 Einträge, 3 Seiten



View all threads created 2006-04-30 15:51.