On Fri, 2011-02-25 at 22:23 +0800, zesheng wang wrote:
> $loveStr =~ s/(l)ove/@{[$1 eq 'L'?'T':'t']}est/gi;
> 不知道你是不是要这个效果?

这个写法很Perl!不过还有点儿问题,我再学习一下。

我没看明白:
@{[$1 eq 'L'?'T':'t']}est中的 @{...}怎么理解?

Thanks
B.R
Kermit

> 在 2011年2月25日 下午6:17,Achilles Xu <[email protected]>写道:
>         上面的方法也不是一无是处,可以先把foreach里的代码简化了。至于
>         怎么一句实现,我再想想。
>          
>          
>         $loveStr = q/love LOVE Love lOVe LOve loVE/;
>            print $loveStr."\n";
>            foreach my $en ($loveStr =~ m/love/ig) {
>         
>                 $en2 = $en;
>                 $en2 =~ tr/loveLOVE/testTEST/;
>                 $loveStr =~ s/$en/$en2/g;    
>            }
>            print $loveStr."\n";
>         
>         
>         在 2011年2月25日 下午6:11,Achilles Xu
>         <[email protected]>写道:
>         
>         
>                 呵呵,上面这个是错的,一时没考虑清楚,手快给发了。我再
>                 想想。
>                 
>                 在 2011年2月25日 下午6:10,Achilles Xu
>                 <[email protected]>写道: 
>                 
>                 
>                         tr/loveLOVE/testTEST/;
>                         
>                         在 2011年2月25日 下午3:22,Kermit
>                         <[email protected]>写道: 
>                         
>                         
>                                 On Fri, 2011-02-25 at 15:11 +0800,
>                                 Achilles Xu wrote:
>                                 > s/love/test/i;
>                                 >
>                                 > 最后的i表示不区分大小写
>                                 
>                                 
>                                 那样会把所有的大小写无关的love都换成小
>                                 写的test, 我其实想要的是这样的效
>                                 果:
>                                 
>                                    $loveStr = q/love LOVE Love lOVe
>                                 LOve loVE/;
>                                    print $loveStr."\n";
>                                    foreach my $en ($loveStr =~
>                                 m/love/ig) {
>                                        if($en eq uc($en)) {
>                                            $loveStr =~ s/$en/TEST/g;
>                                        }elsif(substr($en,0,1) eq
>                                 uc(substr($en,0,1))) {
>                                            $loveStr =~ s/$en/Test/g;
>                                        }else {
>                                            $loveStr =~ s/$en/test/g;
>                                        }
>                                    }
>                                    print $loveStr."\n";
>                                 
>                                 运行输出:
>                                 love LOVE Love lOVe LOve loVE
>                                 test TEST Test test Test test
>                                 
>                                 只不过上面写法太罗嗦,不知有没有更优
>                                 雅,更Perl的写法?
>                                 
>                                 Thanks
>                                 B.R
>                                 Kermit
>                                 
>                                 
>                                 >
>                                 > 在 2011年2月25日 下午2:17,Kermit
>                                 <[email protected]>写道:
>                                 >         Dear all,
>                                 >
>                                 >         $loveStr = q/love Love LOVE
>                                 lOVe LOVe/;
>                                 >
>                                 >         如果在emacs中编辑C/C++代码
>                                 时,用"M-x replace-string love
>                                 >         test",
>                                 >         就会从
>                                 >         q/love Love LOVE lOVe LOVe/;
>                                 >         变为:
>                                 >         q/test Test TEST test Test/;
>                                 >
>                                 >         就是说能够识别开头的大写和全
>                                 大写。这在Perl中有没有什么方式快捷
>                                 >         实现?
>                                 >
>                                 >         Thanks
>                                 >         B.R
>                                 >         Kermit
>                                 >
>                                 >
>                                 >
>                                 >
>                                 >
>                                 >         --
>                                 >         您收到此邮件是因为您订阅了
>                                 Google 网上论坛的“PerlChina Mongers
>                                 >         讨论组”论坛。
>                                 >         要向此网上论坛发帖,请发送电
>                                 子邮件至
>                                 >         [email protected]。
>                                 >         要取消订阅此网上论坛,请发送
>                                 电子邮件至 perlchina
>                                 >
>                                 [email protected]。
>                                 >         若有更多问题,请通过
>                                 >
>                                 
> http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论
>                                 >         坛。
>                                 >
>                                 >
>                                 >
>                                 >
>                                 > --
>                                 > ---------------------------
>                                 > Achilles Xu
>                                 >
>                                 >
>                                 >
>                                 
>                                 > --
>                                 
>                                 > 您收到此邮件是因为您订阅了 Google 网
>                                 上论坛的“PerlChina Mongers 讨论
>                                 > 组”论坛。
>                                 > 要向此网上论坛发帖,请发送电子邮件至
>                                 [email protected]。
>                                 > 要取消订阅此网上论坛,请发送电子邮件
>                                 至 perlchina
>                                 > [email protected]。
>                                 > 若有更多问题,请通过
>                                 
> http://groups.google.com/group/perlchina?hl=zh-CN
>                                 > 访问此网上论坛。
>                                 
>                                 
>                                 --
>                                 您收到此邮件是因为您订阅了 Google 网上
>                                 论坛的“PerlChina Mongers 讨论组”论坛。
>                                 要向此网上论坛发帖,请发送电子邮件至
>                                 [email protected]。
>                                 要取消订阅此网上论坛,请发送电子邮件至
>                                 perlchina
>                                 [email protected]。
>                                 若有更多问题,请通过
>                                 
> http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。
>                                 
>                                 
>                         
>                         
>                         
>                         -- 
>                         ---------------------------
>                         Achilles Xu
>                         
>                 
>                 
>                 
>                 -- 
>                 ---------------------------
>                 Achilles Xu
>                 
>         
>         
>         
>         
>         -- 
>         ---------------------------
>         Achilles Xu
>         
>         
>         
>         -- 
>         您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers
>         讨论组”论坛。
>         要向此网上论坛发帖,请发送电子邮件至
>         [email protected]。
>         要取消订阅此网上论坛,请发送电子邮件至 perlchina
>         [email protected]。
>         若有更多问题,请通过
>         http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论
>         坛。
>         
> 
> 
> 
> -- 
> 您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论
> 组”论坛。
> 要向此网上论坛发帖,请发送电子邮件至 [email protected]。
> 要取消订阅此网上论坛,请发送电子邮件至 perlchina
> [email protected]。
> 若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN
> 访问此网上论坛。


-- 
您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。
要向此网上论坛发帖,请发送电子邮件至 [email protected]。
要取消订阅此网上论坛,请发送电子邮件至 [email protected]。
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。

回复