i'm having problems 1 liner:
perl -pe 's/findme/`cat rep.txt`/ge' in.txt if use this, works, want add text before , after replaced content:
perl -pe 's/findme/something1`cat rep.txt`something2/ge' in.txt i error:
syntax error @ -e line 1, near "something1`cat rep.txt`" shouldn't output of command treated string?
adicionally, i'm confused fact can't replace character <
perl -pe 's/something/<somethingelse/ge' in.txt unterminated <> operator @ -e line 1. escaping < (\<) gives me same error.
the problem using e modifier regexp, means eval{} (or in other words, execute) replacement string code snippet, treating shell replacement. e modifier expects code, not text.
so, normal (global) replace use:
s/findme/replace/g ... , fine. however, when use e flag, replacement run code. thus:
s/findme/`cat foo.txt`/ge; ... equivalent ...
$replace = `cat foo.txt`; s/findme/$replace/g; so, can see how this:
s/findme/something`cat foo.txt`/ge; ... equivalent to...
$replace = something`cat foo.txt`; s/findme/$replace/g; ... , syntax error. try way instead:
s/findme/"something".`cat foo.txt`/ge; and find works, because valid code:
$replace = "something".`cat foo.txt`; ( can of course put more complex things in there; since going on behind scenes eval{}, code doing this:
eval { "something".`cat foo.txt`; } s/findme/$_/g; however i'm simplifying ease of comprehension :-)