perl 正则表达式的替换问题-在线等

shenjf2000 2011-03-10 11:52:11
因为项目需要临时学习perl 做一些文本处理,在替换上遇到问题,时间比较紧,就到这里请大侠们指教:
伪代码(下面如果有语法错误请指出):
$str = "abc 22";
$str =~ s/(\d)+/(?{&mySub($1)})/;

sub mySub{
$_[0]/2; //这里会自动将22转成number 类型么?
}

我想达到的效果是经过替换后str的值为"abc 11"


也就是说,在替换过程中,需要调用一个外部函数来对匹配的内容($i)进行处理后再进行替换。
我了解到perl中有(?{})及/e的语法似乎可以完成这样的操作,但是试验没有成功。
不知是我的对上面用法的理解有问题,还是解决这样的问题所采用的方案有问题?请指教,谢谢!



...全文
121 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
shenjf2000 2011-03-10
  • 打赏
  • 举报
回复
谢谢指点,您说得对,因为临时使用,就想偷点懒:)
iambic 2011-03-10
  • 打赏
  • 举报
回复
其实磨刀不误砍柴工。自己解决是王道。
use strict;
use warnings;

my $str = "abc 22";
$str =~ s{\d+}{$&/2}e;

print $str;

37,743

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧