microperl's escape character \ doesn't work in system calls [fixed]

ip_zed

Neuer User
Mitglied seit
28 Jan 2008
Beiträge
4
Punkte für Reaktionen
0
Punkte
0
Hi,

unter Freetz-1.1.1 behandelt microperl das Escapezeichen \ nicht richtig. Speichert man die untenstehenden Zeilen als test.pl und ruft /sbin/microperl test.pl auf der freetz.box auf, wird lediglich eine Zeile statt drei ausgegeben. Kann man dieses Verhalten irgendwie korrigieren oder soll ich einen bug report anlegen? Ich benötige die Ausgabe von Anführungszeichen für die korrekte Übergabe von Parametern die Leerzeichen enthalten können.

Code:
system( "echo Hello World" );         # Hello World
system( "echo \"Hello World\"" );     # Hello World
system( "echo \\\"Hello World\\\"" ); # "Hello World"

Nachtrag: ein Update auf freetz-trunk hat das Problem gelöst, siehe hier.
 
Zuletzt bearbeitet:
Ich denke, da ist ein Bugreport auf der Seiote der Autoren fällig. Hat wenig mit Freetz zu tun, wenn es ansonsten das tut, was es soll...
 
Nur die erste Zeile wird ausgegeben; dort ist halt kein Escapezeichen enthalten. Die erwartete Ausgabe steht jeweils hinter jeder Zeile als Kommentar im Code. Sofern ihr ausschließt, dass die (in freetz angewandte) Konfiguration von microperl nicht der Auslöser für das obige Verhalten ist, lassen wir die Sache meinetwegen auf sich beruhen.

Andererseits ist ja bis jetzt nicht mal geklärt, ob das Problem nur in meiner Installation oder generell auftritt. Eine fehlerhafte Interpretaton von \ hätte zumindest Potential für eine ganze Menge verlorene Zeit bei anderen Freetz Bastlern zu sorgen.
 
Nun, versuch dich mal an den Konfigurationsmöglichkeiten von microperl. Vielleicht findet sich was. Ich weiss es nicht. Und ehrlicherweise gibt es fast Niemanden der mir bekannt ist, der microperl überhaupt nutzt.

Oder aber du versuchst mal, deine Konfiguration in Ordnung zu bringen:
Code:
/var/tmp # cat test.pl
system( "echo Hello World" );         # Hello World
system( "echo \"Hello World\"" );     # Hello World
system( "echo \\\"Hello World\\\"" ); # "Hello World"

/var/tmp # ./microperl test.pl
Hello World
Hello World
"Hello World"
/var/tmp #
 
Zuletzt bearbeitet:
Bau doch mal Microperl für dein Host und schaue was es da tut.

MfG Oliver
 
Ich habe microperl 5 Minuten bevor ich das oben gepostet habe gebaut, das Binary auf die Box geschoben, das File angelegt und eben obiges gepostet.
 
@Silent-Tears: Ich habe das Paket microperl über die menuconfig von freetz-1.1.1 angewählt und installiert (und hatte somit keinen direkten Einfluss auf die Konfiguration von microperl selbst). Benutzt Du freetz-1.1.1 oder eine aktuellere Version aus dem svn repository? Hast Du die ash (busybox) verwendet um das Skript aufzurufen? Sieht danach aus. Welche Box hast Du? Ich besitze die 7270. Hast Du den AVM Kernel ersetzt? Das habe ich bei mir derzeit gemacht. Danke für Deine Antwort(en).
 
Zuletzt bearbeitet:
Ich hab ein trunk-Image auf der Box, wie in meiner Signatur steht, und mich per SSH auf der Box eingelogged, um das zu testen.
 
Benutzt Du ... Danke für Deine Antwort(en).

Eine Menge Fragen angesichts dessen, daß Du noch nicht einmal geschrieben hast, wie bei Dir die Ausgabe aussieht.

Gibt es überhaupt eine Konfiguration für microperl?

Wenn das Ergebnis bei Dir falsch ist, dann erstelle Dir eine Firmware mit Replace Kernel und strace. Damit kann man besser sehen, was passiert.
 
Gibt es überhaupt eine Konfiguration für microperl?

Angesichts dessen, dass ich nnur per scp das Binary auf die Box geschoben hab und das dort ausgeführt haben, wohl eher nicht ;) (zumindest funktioniert es ohne so etwas :D )
 
Nach einem Update auf freetz-trunk bei Übernahme der bisherigen .config tritt das Problem nicht mehr auf, d.h. es werden alle drei Zeilen korrekt ausgeben. Immerhin gibt es einen Versionswechsel bei Perl von 5.10.0 auf 5.10.1 und auch die Patches wurden verändert.
 
Hi.
Ich hab das microperl Update in den stable-branch-1.1 gemerged. r3815

MfG Oliver
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.