Ich bin ein Anfänger mit Perl. Ich benutze den Below Perl-Befehl, um "/ $" in meinem tcl-Skript zu suchen und zu ersetzen. Dies funktioniert gut, wenn es direkt auf der Linux-Befehlszeile verwendet wird.Perl-Befehl zum Suchen und Ersetzen funktioniert nicht, wenn von einem anderen Perl-Skript aus aufgerufen wird
Ich rufe an, den obigen Perl One Liner in einem anderen Perl Skript mit System Command und nur mit "` "Back Tick aufzurufen.
system(`perl -p -i -e 's/\/\$/\/\\\$/g' sed_list.tcl`);
`perl -p -i -e 's/\/\$/\/\\\$/g' sed_list.tcl`;
Ich bekomme die Below-Fehler. Bitte helfen Sie mit diesem Problem.
Bareword found where operator expected at -e line 1, near "$/g"
(Missing operator before g?)
Final $ should be \$ or $name at -e line 1, within string
syntax error at -e line 1, near "s//$/"
Execution of -e aborted due to compilation errors.
Ich weiß nicht, ob ich noch jemand Trennung Operator wie% verwenden und # wie SED-Befehl aber, wenn ich ‚%‘ Operator für die Trennung verwendet, ich habe Fehler nicht aber Arbeit erledigt ist nicht.
`perl -p -i -e 's%\/\$%\/\\\$%g' sed_list.tcl`;
Ich konnte keine ausreichenden Ergebnisse für diese spezielle Ausgabe von '$' Variable im Internet finden. Jede Hilfe wird geschätzt.
http://stackoverflow.com/questions/619926/should-i-escape-shell-arguments-in-perl – xxfelixxx
Warum werden Backtick mit Systembefehl verwendet? Sie sollten '' '' wie 'system (" ")' verwenden. – serenesat
Danke für Ihre Antwort. System ("perl -p -i -e's/\/\ $/\/\\\ $/g 'sed_list.tcl"); Das habe ich schon ausprobiert aber nutzlos. Ich bekomme immer noch den gleichen Fehler. Bitte schlagen Sie eine Lösung vor. Ich werde versuchen, Sie zu aktualisieren – Sridhar