chinamox has asked for the wisdom of the Perl Monks concerning the following question:
Greetings again good and saintly monks,
This is an interesting little regex problem that grew out of a recent class assignment:
Basically I want to take a line of text that contains values in Chinese national currency like this:
__DATA__ Hello all! Today I bought breakfast for 02.50 and lunch for 10.20 + Dinner was a real splurge at 21.00. __END__
And convert it and put it out in American dollars like this:
__DATA__ Hello all! Today I bought breakfast for 00.32 and lunch for 01.30 +. Dinner was a real splurge at 02.67. __END__
note that it is ok to keep the 0s on the left side of the numbers after the conversion.
I have managed to come up with something that looks like this:
my $string = <>; my $word; ### # I need help fixing this split function so that I can match the strin +gs below but # still keep the formatting from the original text. ### my @array = split(/*regex help needed here!*/, $string); while(@array){ $word = shift(@array); if($word = ~ /[0-9][0-9][.][0-9][0-9]/)){ ### #I have figured out the math to do the currency conversion ### print “$word”; } else{ print “$word”; } }
Basically I think it comes down to the fact I need help making the split function more intelligent. Is this possible, or am I asking too much from a simple regex?
Thanks for all help and opinions,
-mox
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Crafting a regex for a split() function...
by GrandFather (Saint) on Nov 23, 2006 at 01:24 UTC | |
by chinamox (Scribe) on Nov 23, 2006 at 01:41 UTC | |
by ikegami (Patriarch) on Nov 23, 2006 at 01:46 UTC | |
by chinamox (Scribe) on Nov 23, 2006 at 02:03 UTC | |
by GrandFather (Saint) on Nov 23, 2006 at 02:30 UTC |