in reply to How to extract these groups of characters?
Your description has a mismatch between the order of data specified and the order captured:
DATA: "joe(lots of spaces) 0.0000E(one space)000 (spaces) 9.0720E-001 (lots of spaces) d23 ..."
CAPTURE: "... the first three "words" ("joe", "0.00E 000", and "d23") ..."
Your description of the spaces separating the data fields is inconsistent. The following assumes "(amount of spacing between each "group of characters" is irregular, but always more than just a single space)" is more accurate than, for instance, the highly vague "a whole bunch spaces".
My best guess is that the spaces separating the data fields match /\s{2,}/. On this basis, you can simply use split:
#!/usr/bin/env perl -l use strict; use warnings; while (<DATA>) { chomp; print "Line $.: $_"; print for split /\s{2,}/; } __DATA__ joe 0.00E 000 9.0720E-001 d23 9.0208E-001 joe2 0.00E-000 9.0720E 001 d23 9.0208E 001 joe3 0.00E 000 9.0720E-001 d23 9.0208E 001 joe4 0.00E-000 9.0720E 001 d23 9.0208E-001
Output:
Line 1: joe 0.00E 000 9.0720E-001 d23 9.0208E-001 joe 0.00E 000 9.0720E-001 d23 9.0208E-001 Line 2: joe2 0.00E-000 9.0720E 001 d23 9.0208E 001 joe2 0.00E-000 9.0720E 001 d23 9.0208E 001 Line 3: joe3 0.00E 000 9.0720E-001 d23 9.0208E 001 joe3 0.00E 000 9.0720E-001 d23 9.0208E 001 Line 4: joe4 0.00E-000 9.0720E 001 d23 9.0208E-001 joe4 0.00E-000 9.0720E 001 d23 9.0208E-001
— Ken
|
---|