Greetings, Here is one way of doing it. I admit there will be better solutions to this.
while (<DATA>) { if(/ (\w+) #Match dns \. #Match dot (\w+) #Match support (@) #Match @ (\w+) #Match dnsbed \. #Match dot (\w+) #Match com /x) { print "$1.$2$3$4.$5"; } } __DATA__ dns.supp...@dnsbed.com best, Shaji ------------------------------------------------------------------------------- Your talent is God's gift to you. What you do with it is your gift back to God. ------------------------------------------------------------------------------- ________________________________ From: Guoke Zhou (Wicresoft) <v-guo...@microsoft.com> To: Feng He <fen...@nsbeta.info> Cc: "beginners@perl.org" <beginners@perl.org> Sent: Friday, 21 December 2012 2:01 PM Subject: RE: Help with a regex $string='dns\.support.dnsbed.com'; print "$string\n"; if ($string =~ /^(.*?)\\\.(.*?)(?<!\\)\.(.*)$/) { print $1.".".$2."@".$3; } Output: dns\.support.dnsbed.com dns.supp...@dnsbed.com 我猜你遇到的是转义的问题。。。 -----Original Message----- From: Feng He [mailto:fen...@nsbeta.info] Sent: Friday, December 21, 2012 3:39 PM To: beginners@perl.org Subject: Help with a regex Hello, I have a string like: dns\.support.dnsbed.com I want to translate it to a regular email address: dns.supp...@dnsbed.com if ($string =~ /^(.*?)(?<!\\)\.(.*)$/) { my $user = $1; my $tld = $2; return $user . '@'. $tld; } But this won't work correctly. I got: d...@support.dnsbed.com Where do I get wrong? Thanks. -- To unsubscribe, e-mail: beginners-unsubscr...@perl.org For additional commands, e-mail: beginners-h...@perl.org http://learn.perl.org/