Thread system() in Perl mit multiplen Argumenten
(15 answers)
Opened by LordK at 2016-07-03 14:59
So würde ich es wahrscheinlich auch machen. Dabei wird die Shell benutzt. Grundsätzlich bin ich ja ein Gegner davon, für einfache Programmaufrufe eine Shell zu starten, weil das Escaping fürchterlich werden kann. Aber in diesem Fall scheinen alle Argumente einfache Strings zu sein (daher kein Escaping nötig) und in diesem Fall braucht man halt die Umleitung, die in Perl leider sonst nicht so einfach möglich ist.
Ich habe ja schon öfter das subprocess-Modul von Python gelobt, und das muss ich wohl an dieser Stelle auch wieder tun: Code: (dl
)
1 with open('/tmp/outfile', 'w') as f: Das Modul ist auch noch nicht ewig im Core, aber immerhin haben die bei Python irgendwann erkannt, dass man so etwas sauber und ohne Shell mit der Standard-API tun können muss. Das sollte bei Perl auch mal erkannt werden. (Ganz zu schweigen davon, dass man bei "subprocess" auch vernünftige Fehlermeldungen kriegt, wenn der Befehl nicht gefunden wird oder wenn der Kindprozess gekillt wird.) Last edited: 2016-09-04 19:43:25 +0200 (CEST) Lieblingsmodule: IPC::System::Simple, Path::Class
|