#!/usr/bin/perl --
#~ 2011-09-29-02:50:12PDT by Anonymous Monk
#~ perltidy -csc -otr -opr -ce -nibc -i=4
use strict;
use warnings;
use Data::Dumper();
Main( @ARGV );
exit( 0 );
sub Main {
#~ http://perlmonks.com/?abspart=1;displaytype=displaycode;node_id=928
+496;part=1
my $raw = <<'__RAW__';
CORDR KZN MTC-N AINT 2011-09-29 09:00 DTL PM05 83.79 4 - -
CORDR SGC MTC-N AINT 2011-09-29 09:00 JSA BR20 85.39 3 - -
CORDR SGC MTC-N AINT 2011-09-29 09:00 JSA BR21 86.06 1 - -
CORDR Unk MTC-N AINT 2011-09-29 09:00 JSA BR22 84.55 2 - -
CORDR SGC MTC-N AINT 2011-09-29 09:00 JSA RN10 86.97 1 - -
CORDR SGC MTC-N AINT 2011-09-29 09:00 JSA RS11 84.57 2 - -
CORDR SGC MTC-N AINT 2011-09-29 09:00 JSA RS12 86.31 2 - -
CORDR SGC MTC-N AINT 2011-09-29 09:00 JSA SD10 86.79 1 - -
CORDR SGC MTC-N AINT 2011-09-29 09:00 JSA SN10 85.54 1 - -
__RAW__
while( $raw =~ /^(.*)$/gm ){
my $line = $1;
print DD( Gash( $line ) );
}
} ## end sub Main
sub DD { Data::Dumper->new([@_])->Useqq(1)->Dump; }
BEGIN {
my @fieldOrder = (
'APP',
'REG',
'KPI',
'INTERFACE',
'DATE',
'TIME',
'NODE',
'RAN',
'SUCC_RATE'
);
my %fieldWidths = (
APP => 'A5',
DATE => 'A10',
INTERFACE => 'A4',
KPI => 'A5',
NODE => 'A3',
RAN => 'A4',
REG => 'A3',
SUCC_RATE => 'A5',
TIME => 'A5'
);
my $template = join ' x1 ', @fieldWidths{ @fieldOrder };
sub Gash {
my %dat;
@dat{ @fieldOrder } = unpack $template, $_[0];
return \%dat;
} ## end sub Gash
} ## end BEGIN
|