在Windows 10上执行Perl时出现“无效参数”错误

问题描述:

我有这个Perl脚本。在Windows 10上执行Perl时出现“无效参数”错误

perl -i -0pe 's/^Insert\s*(.*)\.png\s*\n([^\n]*)$/!\[\2](..\/figures\/\1-tn.png)/mg' */*.markdown 

这正常工作与MacOS X的,但是当我在Windows 10下执行该命令,我有以下错误信息:

C:\Users\hello\Desktop\progit\en>perl -i -0pe "s/^Insert\s*(.*)\.png\s*\n([^\n]*)$/!\[\2](..\/figures\/\1-tn.png)/mg" 
*/*.markdown 

Can't open */*.markdown: Invalid argument. 

什么可能导致Windows 10这个问题?我在Windows上使用Strawberry Perl。

+0

windows不使用'/',而是'\'作为分隔符。 我记得它有时会容忍它,但这可能是问题所在。不过,我没有人测试这个atm。 你可能也想检查你的正则表达式的相同的问题! – bytepusher

当我尝试Perl from MinGW时,没有错误。基于Cygwin的perl似乎没有问题(或绕过此问题)。

另请参考:Multi-line regular expression issue in Perl on Windows 10.

这不是一个草莓的问题。这是一个shell问题。 Bash会很乐意将多个通配符扩展为长长的命令行参数列表。微软的炮弹没有那么多。