帮助!计算字母!

感觉您对正则表达用的太熟了!


QUOTE:
原帖由 Lonki 于 2007-11-11 18:17 发表
my $b = $a =~ tr/a//;

or

my $b = $a =~ s/a//g;

这是把a都去掉了吧,题目是让查a的个数的啊!!??

你打错了吧...10楼我都没编辑过...

=~  tr/a//
=~ s/a/a/g

都不会改变原字符串



QUOTE:
原帖由 Lonki 于 2007-11-12 09:11 发表
你打错了吧...10楼我都没编辑过...

=~  tr/a//
=~ s/a/a/g

都不会改变原字符串

原来……tr可以这么用……
我原来一直这么做和s一样效果,结果刚试验发现tr是不替换
my $b = $a =~ s/a/a/g;

真的可以哈,能问下为什么会这种情况呢?
我理解的是,先执行=~ s作替换,我打印了一下$a发现与原来的$a没区别,然后将$a赋值给$b,那么$b的值也应该与$a一样,
可实际的$b的值是6,这应该怎么理解好呢?
这样看:
my $b = ($a =~ s/a/a/g);

其中正则式返回值是匹配成功的次数


QUOTE:
原帖由 initialization 于 2007-11-12 23:45 发表
my $b = $a =~ s/a/a/g;

真的可以哈,能问下为什么会这种情况呢?
我理解的是,先执行=~ s作替换,我打印了一下$a发现与原来的$a没区别,然后将$a赋值给$b,那么$b的值也应该与$a一样,
可实际的$b的值是6,这应该 ...

这是perl里面特有的上下文的概念,有时候很让人晕