Ich habe den folgenden Text in einer Datei:Wie Sonderzeichen in Perl-Torte zu handhaben ersetzen finden
prompt **********************************************************************************
prompt ** Start
prompt **********************************************************************************
prompt **
prompt ** Calling: FILE
prompt **
prompt **
@@FOLDER\FILE
prompt **
prompt ** commit
commit;
prompt **
prompt **
prompt **
prompt **********************************************************************************
prompt ** End
prompt **********************************************************************************
Wenn ich
$ perl -pi -e "s/FILE/$file/g" ./tmp.sql;
Es mit dem, was ich alle Instanzen des Wortes Datei ersetzt in $ file haben, aber wenn ich
$ perl -pi -e "s/FOLDER/$folder/g" ./tmp.sql;
aufrufen, die nur den Ordner String hat, es spuckt, ersetzt nicht anyt Hing und die Shell, wo ich es ausspreche aus spuckt dieses Zeug aus:
Execution of -e aborted due to compilation errors.
Unquoted string "g" may clash with future reserved word at -e line 1.
Unknown regexp modifier "/R" at -e line 1, at end of line
Unknown regexp modifier "/F" at -e line 1, at end of line
Unknown regexp modifier "/5" at -e line 1, at end of line
Unknown regexp modifier "/4" at -e line 1, at end of line
Unknown regexp modifier "/7" at -e line 1, at end of line
Unknown regexp modifier "/5" at -e line 1, at end of line
Unknown regexp modifier "/6" at -e line 1, at end of line
Unknown regexp modifier "/_" at -e line 1, at end of line
Unknown regexp modifier "/2" at -e line 1, at end of line
Wer weiß, was gibt?
Was ist in '$ Ordner'? Sie übergeben den Wert von $ Ordner nicht direkt an Perl. Sie erstellen dynamisch einen Perl-Ausdruck, der ausgeführt werden soll. Wenn es (wie es wahrscheinlich erscheint) ein '/' im Wert von '$ folder' ist, wird das den Ausdruck' s // 'beenden und nicht als Teil des Ersetzungstextes behandelt. – chepner
Ja, es hatte einen Schrägstrich, ich änderte den Wert des Ordners und das behob es. Danke – sloven
Das Ändern des Wertes von 'Ordner' ist möglicherweise nicht immer möglich; Siehe meine Antwort für eine Änderung des Perl-Codes, der für * jeden * Wert von 'Ordner' sicher ist. – chepner