#!/usr/bin/env perl
use strict;
use warnings;
use Data::Dumper;
#read input data:
my @rows;
#set record separator to 3 line feeds.
local $/ = "\n\n\n";
while ( <> ) {
next unless m/Dumpdata example/;
#map key-values out of this 'chunk'.
my %row = m/\s*(\w+)\S*\s+(\S.*)/g;
push @rows, \%row;
}
#print whole data structure for debugging:
print Dumper \@rows;
#define columns and ordering for output:
my @output_cols = qw /Info Detail Warning Spec/;
#iterate rows
foreach my $row ( @rows ) {
#print fields selected from output_cols.
#use a 'hash slice' - look it up in perl docs.
print join ";", @{$row}{@output_cols},"\n";
}
####
Dumpdata example
-----------------
Warning bad news here
Detail: Some really nice infos these are
Info: This is a problem
but there is a solution
Spec: 2nd of 4
####
"bad news here"; "Some really nice infos these are"; "This is a problem but there is a solution"; "2nd of 4"