in reply to File Parsing and Pattern Matching
use warnings; use strict; my %results; my $type; while (<DATA>) { next if m{^/}; next unless /\S/; if (/^TYPE\s(\S+)/) { $type = $1; $results{$type}{CAUSE } = 'UNDEF'; $results{$type}{AFFECT} = 'UNDEF'; } if (/^(CAUSE|AFFECT)\s(\S+)/) { $results{$type}{$1} = $2; } } for (sort keys %results) { print "$_:$results{$_}{CAUSE},$results{$_}{AFFECT}\n"; } __DATA__ // HEADER TAG // VERSION TAG TYPE VALUE1 EQUALS MAIN I am useless text CAUSE FAIL AFFECT ERROR ENDTYPE TYPE VALUE2 EQUALS MAIN I am useful test ENDTYPE TYPE VALUE3 EQUALS MAIN CAUSE DEGRADED ENDTYPE TYPE VALUE4 EQUALS MAIN AFFECT WARNING ENDTYPE
prints:
VALUE1:FAIL,ERROR VALUE2:UNDEF,UNDEF VALUE3:DEGRADED,UNDEF VALUE4:UNDEF,WARNING
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: File Parsing and Pattern Matching
by GotToBTru (Prior) on Sep 05, 2013 at 19:17 UTC |