From: <[EMAIL PROTECTED]>
> Hello Jenda,
>
> I am getting weak on regex.
>
> Could you please break this down for me /(.*?-?\d+(?:\.\d+)?)/g
>
> That is:
>
> my @last_line = ($report[-1] =~ /(.*?-?\d+(?:\.\d+)?)/g); # split the
> last line into fields (including spaces!)
I'm trying to match each column including the leadning spaces.
The regexp matches as much as necessary of anything followed by a
number. The
-?\d+(?:\.\d+)?
matches a number, both positive and negative and both integer and
float.
Assuming the last line is
1974 9.2 3.4 10.5 8.8 9.7 4.6 13.0 11.5
The regexp first matches "1974", then " 9.2",
then " 3.4", then " 10.5", ...
I do care about the spaces because I need to find the ends of the
columns.
(I removed a few spaces to make it fit on one line in mail client.)
> Also, why did you use $report[-1] instead of $report[$#report]?
They mean the same (not sure if there is any speed difference, but I
don't think it matters). I just think $report[-1] is cleaner and if I
ever needed to copy the snippet of code and rename the variable I
only have to do it once. It's just "the first item from the end"
instead of "the last element".
Jenda
===== [EMAIL PROTECTED] === http://Jenda.Krynicky.cz =====
When it comes to wine, women and song, wizards are allowed
to get drunk and croon as much as they like.
-- Terry Pratchett in Sourcery
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>