Thread system() - Parameterübergabe per Array und Leerzeichen (2 answers)
Opened by Max_Perlbeginner at 2017-07-09 09:46

Max_Perlbeginner
 2017-07-09 09:46
#186805 #186805
User since
2016-04-04
100 articles
BenutzerIn
[default_avatar]
Liebe Perl Experten,

Ich versuche das Kommando system() zu verstehen. Ich möchte die Argumente direkt per Array übergeben, und somit die Shell umgehen. Allerdings bin ich auf ein komisches Problem gestoßen.

Wenn ich zwischem dem switch (z.B. -O) und der jeweiligen Option Leerzeichen schreibe, erhalte ich eine merkwürdige Fehlerausgabe:

Code: (dl )
system("$Caecilia::Settings::ABCM2PS_PATH", "-N 1", "-O $dir\/preview.abc", "-v", "$dir\/preview.abc");


Als Fehlermeldung bekomme ich bspw.:
Quote
error: Cannot create output file /tmp/dul6fWJ3h0/preview001.svg - abort
error: Invalid parameter < 1> for flag -N


Wenn ich die Leerzeichen weglasse, klappt alles ganz wunderbar:
Code: (dl )
system("$Caecilia::Settings::ABCM2PS_PATH", "-N1", "-O$dir\/preview.abc", "-v", "$dir\/preview.abc");


Kann mir irgendjemand dieses für mich derzeit noch nicht einleuchtende Verhalten erklären? Wenn ich im Terminal das Kommando per Hand eingebe, kann ich ja zwischen den switches und Optionen auch Leerzeichen verwenden?

Im Voraus lieben Dank,
Max

View full thread system() - Parameterübergabe per Array und Leerzeichen