Greetings,

Thanks Timothy for your suggestions. It is greatly appreciated.
 
best,
Shaji 
-------------------------------------------------------------------------------
Your talent is God's gift to you. What you do with it is your gift back to God.
-------------------------------------------------------------------------------


________________________________
 From: timothy adigun <2teezp...@gmail.com>
To: *Shaji Kalidasan* <shajiin...@yahoo.com> 
Cc: "beginners@perl.org" <beginners@perl.org> 
Sent: Thursday, 15 August 2013 1:41 PM
Subject: Re: Help on regex
 


Hi,




On Thu, Aug 15, 2013 at 6:29 AM, *Shaji Kalidasan* <shajiin...@yahoo.com> wrote:

Greetings,
>
>
>Many thanks to Lawrence Statton, Shlomi Fish and Nathan Hilterbrand for your 
>detailed explanation.
>
>
>Here is the complete working code after your suggestions
>
>
>Courtesy : Lawrence Statton and Shlomi Fish
>
>
>
>[code]
>use strict;
>
>use warnings;
>use utf8; #As suggested by Lawrence Statton
>binmode STDOUT,":utf8"; #As suggested by Lawrence Statton
 
  You probably want to use this:
   binmode STDOUT,":encoding(UTF-8)"; instead. Why? ":utf8"  just marks the 
data as UTF-8 without further checking, while ":encoding(UTF-8)" checks the 
data for actually being valid UTF-8. Please read 
http://perldoc.perl.org/functions/binmode.html for more.



>
>while (<DATA>) {
>    #if block as suggested by Shlomi Fish
>    if(my($name, $phone, $address) = /^([a-zA-Z ]+):([\-\d]+):([\w, ]+)$/) {
>        #^([a-zA-Z ]+):([\-\d]+):([\w, ]+)$
>        #Modified the regular expression to match - (dash) as suggested by 
>Lawrence Statton
>        print "Name : $name\n" if defined $name;
>        print "Phone : $phone\n" if defined $phone;
>        print "Address : $address\n" if defined $address; 
>    } else {
>        print "Did not match the regex\n";
>    }
>    
>}
>
>
>__DATA__
>Sachin Tendulkar:408-724-0140:23, Brooke Street, Sunnyvale,CA 94088
>Mahendra Singh Dhoni:408-456-1234:76, Charles Street, Washington, MA 02131
>Rahul Dravid:408-253-3122:123, Queens Street, Canberra, Australia
>Virendar Sehwag:293-259-5395:15 Hilton Avenue, Sydney, Australia
>[/code]
>
>
>[output]
>Name : Sachin Tendulkar
>Phone : 408-724-0140
>Address : 23, Brooke Street, Sunnyvale,CA 94088
>Name : Mahendra Singh Dhoni
>Phone : 408-456-1234
>Address : 76, Charles Street, Washington, MA 02131
>Name : Rahul Dravid
>Phone : 408-253-3122
>Address : 123, Queens Street, Canberra, Australia
>Name : Virendar Sehwag
>Phone : 293-259-5395
>Address : 15 Hilton Avenue, Sydney, Australia
>[/output]
>
>
>
>best,
>Shaji 
>-------------------------------------------------------------------------------
>Your talent is God's gift to you. What you do with it is your gift back to God.
>-------------------------------------------------------------------------------
>
>
>
>________________________________
> From: Lawrence Statton <lawre...@cluon.com>
>To: beginners@perl.org 
>Sent: Wednesday, 14 August 2013 10:17 PM
>Subject: Re: Help on regex
> 
>
>On 08/14/2013 11:26 AM, *Shaji Kalidasan* wrote:
>>     my ($name, $phone, $address) = /^([a-zA-Z ]+):([\-\d]+):([\w, ])$/;
>
>And here is your second problem ...
>
>the "name" part matches.
>
>The phone-number part matches if you either fix the numbers in the
>source data, or allow — in the regexp
>
>THe address part will only match if the remainder of the string after
>the second colon is exactly ONE character in the set [\w, ]
>
>Adding a single plus to make /^([a-zA-Z ]+):([\-\d]+):([\w, ]+)$/
>will work if you fix the input data.
>
>Adding a — to your regexp will work with the existing data
>
>adding
>use utf8;
>binmode STDOUT,":utf8";
>
>will stop sqawks about wide-character printing
>
>-- 
>To unsubscribe, e-mail: beginners-unsubscr...@perl.org
>For additional commands, e-mail: beginners-h...@perl.org
>http://learn.perl.org/
>
>
>
>
>


-- 
Tim

Reply via email to