Thread system() richtig benutzen
(6 answers)
Opened by cbxk1xg at 2013-02-16 16:59
Naja, wirklich aufrufen tust Du nur ein Programm, nämlich xvfb-run.
Das nimmt dann eine Argumentliste und startet dann das entsprechende Programm, das in der Argumentliste enthalten ist. Um nicht in die Quoting-Falle zu tappen, würde ich mal das Kommando als Liste übergeben. Was ist, wenn Deine $source und $destination Leerzeichen enthalten? Wenn Du Elemente des Kommandos als Liste übergibst, ist eine $source auch mit Leerzeichen nur ein einzelnes Argument. Das Kommando wird außerdem direkt gestartet, ohne dass eine Shell-Instanz gestartet wird, die auch nochmal interpretieren will. Es ist ausserdem sinnvoll, den Rückgabewert zu überprüfen: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 my @cmd = ( 'xvfb-run', "--server-args='-screen 0, 1024x768x24'", 'wkhtmltopdf' $source, $destination, ); system( @cmd ) == 0 or die "Command <<@cmd>> not successful: $!\n"; Deine "lustigen" Zeichen schauen nach Kodierungsproblemen aus; UTF8 vs iso-8859-* . Möglicherweise enthält die Originaldatei bereits fehlerhaft kodierte Zeichen? Evtl. sind die Kodierungsangaben im HTML falsch? Schwer zu raten... Da mögen andere mit mehr Wissen dazu sich zu äußern. meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen! |