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}{EFFECT} = 'UNDEF'; } if (/^(CAUSE|EFFECT)\s(\S+)/) { $results{$type}{$1} = $2; } } for (sort keys %results) { print "$_:$results{$_}{CAUSE},$results{$_}{EFFECT}\n"; } __DATA__ // HEADER TAG // VERSION TAG TYPE VALUE1 EQUALS MAIN I am useless text CAUSE FAIL EFFECT ERROR ENDTYPE TYPE VALUE2 EQUALS MAIN I am useful test ENDTYPE TYPE VALUE3 EQUALS MAIN CAUSE DEGRADED ENDTYPE TYPE VALUE4 EQUALS MAIN EFFECT WARNING ENDTYPE
In reply to Re^2: File Parsing and Pattern Matching
by GotToBTru
in thread File Parsing and Pattern Matching
by Mark.Allan
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |