2013-12-22 49 views
0

我对Perl很陌生,我试图弄清楚如何让这个东西起作用。Perl命令行打印 - 在命令行测试正则表达式

我发现了一个例子,在这个线程:Perl Regex - Print the matched value

这里是我想与之合作的例子:我试着运行它使用CMD

perl -e '$str="the variable Xy = 3 in this case"; print $str =~ /(Xy = 3)/;' 

,但产生这个错误:

“无法找到字符串终结符”“”EOF之前的任何位置在-e行1。

当我在powershell中运行它时,什么也没有发生。

我的最终目标是在命令行设置一个变量,运行regexp查找(有时替换)并打印结果。这样我就不必每次写一个正则表达式模式就写一个脚本。

我使用调试器试过,但我做这个设置变量后,当什么也没有发生:

print $str =~ /(Xy = 3)/; 

回答

0

好吧,但是我想它的PowerShell的。我不得不逃避双引号。

perl -e '$str=\"the variable Xy = 3 in this case\"; print $str =~ /(Xy = 3)/;' 

而且同样适用于CMD除了我不得不更换单引号用双引号,因为单引号不是字符串分隔符那里。

perl -e "$str=\"the variable Xy = 3 in this case\"; print $str =~ /(Xy = 3)/;" 
+1

我会将字符串定义更改为qq {}而不是“”以避免转义。 perl -e“$ str = qq {在这种情况下变量Xy = 3}; print $ str =〜/(Xy = 3)/;” – Miller

1

这是更好地把你的语句Perl脚本内对Windows环境,因为你需要为你的大部分东西的Perl双引号,但逃避在命令行上最终变得混乱。