Perl oneliner匹配重复自身

Tim*_*ham 0 perl pcre

我正在尝试用Perl读取文件中某一行的特定部分.有问题的文件具有以下语法.

# Sets $USER1$ 
$USER1$=/usr/....
# Sets $USER2$ 
#$USER2$=/usr/...
Run Code Online (Sandbox Code Playgroud)

我的oneliner很简单,

perl -ne 'm/^\$USER1\$\s*=\s*(\S*?)\s*$/m; print "$1";' /my/file
Run Code Online (Sandbox Code Playgroud)

由于某些原因,我得到了1美元的提取重复几次,显然是在匹配发生后文件中的每一行.我在这里错过了什么?

Jef*_*ges 5

您正在为文件的每一行执行打印,因为无论正则表达式是否匹配,都会为每一行调用print.;用一个替换第一个&&.