#!/usr/bin/perl
####
use strict;
use warnings;
####
open (INFO, "<", "$File") or die("Cannot open the flat file");
open(my $LOG,">>LOG_file") or die("Cannot open");
open(XML,">xml_file") or die("Cannot open");
####
open(my $INFO, '<', $File) or die "Cannot open the '$File': $!;
open(my $LOG, '>>' 'LOG_file') or die "Cannot open 'LOG_file: $!";
open(my $XML, '>', 'xml_file') or die "Cannot open 'xml_file': $!";
####
while(defined(my $line2 = <$INFO>)) {
}
####
chomp $line2;
####
my %config = (
'00' => {
'unpack' => "x40A8",
'fields' => [qw(Var1)],
},
'A0' => {
'unpack' => "x2A9x3A3x3A42A30",
'fields' => [qw(Var1 Var2 Var3 Var4)],
},
);
while(defined(my $line = <$INFO>)) {
my $segment = substr $line, 0, 2;
if(exists $config{$segment}) {
my @fields = unpack $config{$segment}->{'unpack'}, $line;
my %record;
$record{$config{$segment}->{'fields'}->[$_]} = $fields[$_] foreach (0..$#fields);
print Dumper(\%record), "\n";
}
else {
die "ERROR: Unknown segment '$segment'. Config or data error?";
}
}
####
close $INFO or die "Can't close file '$File': $!";
close $LOG or die "Can't close file 'LOG_file': $!";
close $XML or die "Can't close file 'xml_file': $!";