Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:
I have a line constructed like this:
pro * con * date * at * pri * msg *
Where '*' can be any number of words or symbols. Case does not matter. Further the data pair can be in any order making
con * DAte * aT * mSg * pri * pro *
Just as legal as the former example. I'd like to get this data in hash such that pro, con, date, at, pri and msg are the keys with the *'s as the data. For example:
I've tried several different regexes. The closest ispro my project con my customer date 2009-10-5 at 17:00 pri 2 msg Rack +new server pro = my project con = my customer date = 2009-10-5 at = 17:00 pri = 2 msg = Rack new server
However, if 'pro *' is at the end of the line it does not match. Upon trying to account for being at the end of the line I end up with capturing either the entire remainder of the line or just a single white space. Any ideas?if ( m/\s?pro\s(.*?)\s(con|due|at|pri|msg)\s/i ){ print "pro=".$1."\n"; }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: parsing data pairs from single line
by kennethk (Abbot) on Oct 14, 2009 at 17:37 UTC | |
by johngg (Canon) on Oct 14, 2009 at 20:58 UTC | |
|
Re: parsing data pairs from single line
by gmargo (Hermit) on Oct 14, 2009 at 17:55 UTC | |
|
Re: parsing data pairs from single line
by mickep76 (Beadle) on Oct 15, 2009 at 07:13 UTC |