如何绕过Perl的字符串转义s ///中的替换字符串?

Nat*_*ons 3 regex perl

我不确定究竟是什么称呼它,但我已经能够用两个单行重现我的问题.

从包含以下内容的文件'test.txt'开始:

foo
Run Code Online (Sandbox Code Playgroud)

运行以下命令后(在bash中):

perl -n -e "s/(\w)oo/$1ar/; print;" test.txt
Run Code Online (Sandbox Code Playgroud)

输出是' far'

但是,当我引入一个包含替换字符串的变量时,

perl -n -e '$bar = q($1ar); s/(\w)oo/$bar/; print;' test.txt
Run Code Online (Sandbox Code Playgroud)

输出是' $1ar'.

我需要更改哪些内容,以便第二个程序也会输出' far'以及我需要学习哪些关键字才能使这个答案成为可用的?

此外,我尝试将第二个更改为s /// e,无效.

编辑:这不是我想问的问题,就在这里.

max*_*ost 6

这适用于我(在bash中;您可能需要更改引号):

perl -n -e '$bar = "\${1} . ar"; s/(\w)oo/$bar/ee; print;' test.txt
Run Code Online (Sandbox Code Playgroud)

ee替换部分作为文本字符串进行删除.见perlop(1).