in reply to How to improve regex for parsing equals delimited data
Personally I'd parse it into a data structure first, and then use that data structure to generate the output:
use Modern::Perl; use String::Trim; use Data::Dumper; $Data::Dumper::Sortkeys = 1; $Data::Dumper::Terse = 1; my @rows; while (<DATA>) { chomp; trim; my @F = split /\s*=\s*/; push @rows, [map { my %x = (field => $F[$_ - 1], value => $F[$_]); $x{field} =~ s/.*\s+(\S+)$/$1/ unless $_ == 1; $x{value} =~ s/\s*\S+$// unless $_ == $#F; \%x; } 1 .. $#F]; } print Dumper \@rows; for (@rows) { say join q(,), map { $_->{value} } @$_; } __DATA__ FIELDA = ONEAL FIELDB = RELAY FIELDC = L1208 FIELDD = ALTS FIELDA = OSSIPEE FIELDB = DISC FIELDC = SOH: 169879251 FIELDD = DISC FIELDA = OSSIPEE FIELDB = RELAY FIELDC = L1201 FIELDD = ALTS FIELDA = OSSIPEE FIELDB = RELAY FIELDC = L1203 FIELDD = ALTS
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: How to improve regex for parsing equals delimited data
by tobyink (Canon) on May 11, 2012 at 07:34 UTC | |
|
Re^2: How to improve regex for parsing equals delimited data
by sauoq (Abbot) on May 11, 2012 at 12:36 UTC |