The issue is that if the parentheses only appear once in the regular expression and you use a repetition to represent your match like
(\d){8}, you will repeatedly overwrite the same buffer. Probably the clearest solution is using the repetition operator
x in constructing the string for your regular expression:
#!/usr/bin/perl
use strict;
use warnings;
$_ = 'somename 1000 0.24 280 2 2576.9 2731.9 12.0 4195.3';
my $regex = '(^[a-z]\w*)'
. '\s+([\.\d]+)' x 8
. '$';
my (@array) = /$regex/io;
print join "\n", @array;
__END__
somename
1000
0.24
280
2
2576.9
2731.9
12.0
4195.3
Note as well that if you are operating on the special variable $_ there is no need to bind it to the regular expression.
You can also construct that in the regular expression itself using A bit of magic: executing Perl code in a regular expression, as described in perlretut.
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.