在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。
答
当我尝试Perl from MinGW时,没有错误。基于Cygwin的perl似乎没有问题(或绕过此问题)。
另请参考:Multi-line regular expression issue in Perl on Windows 10.
答
这不是一个草莓的问题。这是一个shell问题。 Bash会很乐意将多个通配符扩展为长长的命令行参数列表。微软的炮弹没有那么多。
windows不使用'/',而是'\'作为分隔符。 我记得它有时会容忍它,但这可能是问题所在。不过,我没有人测试这个atm。 你可能也想检查你的正则表达式的相同的问题! – bytepusher