
__svn_ps1(){ local result=$( svn info 2>/dev/null | \ perl -pe 's;^URL: .*?/((trunk)|(branches|Tags)/([^/]*)).*; ;p') if [ -n "$result" ] then printf "${1:- (%s)}" $result fi } Perl 5.10的输出只包含空格,括号,分支名称,标记名称或主干之一以及末尾括号. Perl 5.8.8的输出(没有最终的p)包含了这个加上svn信息输出的每个空格分隔部分的括号版本.
一个可能的解决方法是在svn和perl命令之间使用简单的grep’^ URL:’,但我希望避免这种情况,因为这将针对每个Bash提示执行.
解决方法 如果您只想从匹配的行输出,请不要使用-p命令行开关.它在每个循环结束时打印$_的值.您可能需要使用-n命令行开关:perl -ne 'print if s/.../.../'
对于Perl v5.8和v5.10,我会以同样的方式做到这一点.我不确定你认为/ p修饰符的作用是什么,因为你不使用$`,$&或$’变量或它们的匹配等价物.
您可以在perlrun中阅读有关命令行开关的信息.
总结以上是内存溢出为你收集整理的仅返回Perl 5.8.8中的替换匹配(是:Perl“p”正则表达式修饰符等效)全部内容,希望文章能够帮你解决仅返回Perl 5.8.8中的替换匹配(是:Perl“p”正则表达式修饰符等效)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)