#!/usr/bin/perl
use strict;
use warnings;
use XML::Simple;
use Data::Dumper;
## test script to verify the way xml is parsed##
## $xmlfile is set to data of a format that would be expected to be passed to this if used in a loop ##
my $xmlfile = '
-1
ListPerformances
1433796462559
TMS
2015060400000157
zClosing Shutdown 3D v6 - New
2010010100000038
zClosing Shutdown 3D v6 - New
15
15
2015-06-08T00:30:00-07:00
true
true
464
2015-06-08T00:30:00-07:00
464
false
false
true
696969
false
1
0
false
2015-06-08T00:37:44-07:00
true
0
false
true
2015060400000164
zMorning Startup 3D v3
2011061100000013
zMorning Startup 3D v3
15
15
2015-06-08T12:10:00-07:00
true
true
10
2015-06-08T12:10:00-07:00
10
false
false
true
696969
false
1
0
false
2015-06-08T12:10:10-07:00
true
0
false
true
2015060200000562
* Movie1 3D-AV
2015060800000048
w23_3DP1_Sanandreas_SCCAP_0421pre_150605_02222_TMS_
15
15
2015-06-08T12:55:00-07:00
true
true
8195
2015-06-08T12:29:18-07:00
9737
en,en,en,en,en,en,en,en,en,en
US-G US-G US-G US-G US-G US-G US-G US-G US-G US-G
false
false
true
696969
true
1
0
false
2015-06-08T15:11:35-07:00
true
0
00343929
false
US-13
true
b863a576-d8a3-4f5d-92a7-b66f876f6d7c
Preshow
1
true
3D_Advertisement
1
a55164d0-faa7-4c7c-a688-ed36011add95
Postshow
1
2015060200000563
* Movie1 3D-AV
2015060600000017
w23_3DP1_Sanandreas_SCCAP_0421pre_150605_02062_TMS_
15
15
2015-06-08T16:05:00-07:00
true
true
8195
2015-06-08T15:42:13-07:00
9562
en,en,en,en,en,en,en,en,en,en
US-G US-G US-G US-G US-G US-G US-G US-G US-G US-G
false
false
true
FFFFFF
true
1
0
false
2015-06-08T18:21:35-07:00
true
0
00343929
false
US-13
true
760eb073-81f8-45cb-8553-484c5cecb740
Preshow
1
true
3D_Advertisement
1
a55164d0-faa7-4c7c-a688-ed36011add95
Postshow
1
';
my $performancelist = XMLin( $xmlfile,
ForceArray => 1,
KeyAttr => {
EventIn => 'EventId'
} #ventID is a unique value that I want to use as a key value ##
);
#print Dumper $performancelist;
my $filename = 'mydump.log';
open(my $fh, '>', $filename)
or die "Could not open file '$filename' $!";
print $fh Dumper $performancelist;
close $fh
or die "Could not close file '$filename' $!";
foreach my $keys (keys $performancelist) {
#print "\$keys: " . $keys . "\n";
foreach my $listPerformancesResponse ( keys $performancelist->{MessageBody}[0] ) {
#print $performancelist->{MessageBody}[0]->{$listPerformancesResponse}[0] . "\n";
foreach my $eventInfoList (keys $performancelist->{MessageBody}[0]->{$listPerformancesResponse}[0]) {
# print Dumper $eventInfoList;
foreach my $eventInfo (keys $performancelist->{MessageBody}[0]->{$listPerformancesResponse}[0]->{$eventInfoList}[0]){
#print "\$eventInfo: " . $eventInfo . "\n";
foreach my $outputKeys (keys $performancelist->{MessageBody}[0]->{$listPerformancesResponse}[0]->{$eventInfoList}[0]->{$eventInfo}[0]){
print Dumper $outputKeys;
}
}
}
}
}
__DATA__
$VAR1 = 'ShowStartTime';
$VAR1 = 'RatingFlg';
$VAR1 = 'ImportedShowId';
$VAR1 = 'HeightPos';
$VAR1 = 'OverlappedNum';
$VAR1 = 'EventStatus';
$VAR1 = 'PreshowPackList';
$VAR1 = 'Rating';
$VAR1 = 'DcpFlg';
$VAR1 = 'SubtitleLang';
$VAR1 = 'HavingShowFlg';
$VAR1 = 'ThreeDimension';
$VAR1 = 'WaitGPIFlg';
$VAR1 = 'UncompletedShowFlg';
$VAR1 = 'EventTitle';
$VAR1 = 'ImportFlg';
$VAR1 = 'EventId';
$VAR1 = 'SplId';
$VAR1 = 'AuditoriumNo';
$VAR1 = 'EventRating';
$VAR1 = 'EventDuration';
$VAR1 = 'SplTitle';
$VAR1 = 'EventStartTime';
$VAR1 = 'OverlappedEventFlg';
$VAR1 = 'AuditoriumId';
$VAR1 = 'KdmFlg';
$VAR1 = 'ImportedAnalogFlg';
$VAR1 = 'EventBodyColor';
$VAR1 = 'ShowDuration';
$VAR1 = 'EventEndTime';
$VAR1 = 'SpokenLang';
$VAR1 = 'ShowStartTime';
$VAR1 = 'RatingFlg';
$VAR1 = 'ImportedShowId';
$VAR1 = 'HeightPos';
$VAR1 = 'OverlappedNum';
$VAR1 = 'EventStatus';
$VAR1 = 'PreshowPackList';
$VAR1 = 'Rating';
$VAR1 = 'DcpFlg';
$VAR1 = 'SubtitleLang';
$VAR1 = 'HavingShowFlg';
$VAR1 = 'ThreeDimension';
$VAR1 = 'WaitGPIFlg';
$VAR1 = 'UncompletedShowFlg';
$VAR1 = 'EventTitle';
$VAR1 = 'ImportFlg';
$VAR1 = 'EventId';
$VAR1 = 'SplId';
$VAR1 = 'AuditoriumNo';
$VAR1 = 'EventRating';
$VAR1 = 'EventDuration';
$VAR1 = 'SplTitle';
$VAR1 = 'EventStartTime';
$VAR1 = 'OverlappedEventFlg';
$VAR1 = 'AuditoriumId';
$VAR1 = 'KdmFlg';
$VAR1 = 'ImportedAnalogFlg';
$VAR1 = 'EventBodyColor';
$VAR1 = 'ShowDuration';
$VAR1 = 'EventEndTime';
$VAR1 = 'SpokenLang';
$VAR1 = 'ShowStartTime';
$VAR1 = 'RatingFlg';
$VAR1 = 'ImportedShowId';
$VAR1 = 'HeightPos';
$VAR1 = 'OverlappedNum';
$VAR1 = 'EventStatus';
$VAR1 = 'PreshowPackList';
$VAR1 = 'Rating';
$VAR1 = 'DcpFlg';
$VAR1 = 'SubtitleLang';
$VAR1 = 'HavingShowFlg';
$VAR1 = 'ThreeDimension';
$VAR1 = 'WaitGPIFlg';
$VAR1 = 'UncompletedShowFlg';
$VAR1 = 'EventTitle';
$VAR1 = 'ImportFlg';
$VAR1 = 'EventId';
$VAR1 = 'SplId';
$VAR1 = 'AuditoriumNo';
$VAR1 = 'EventRating';
$VAR1 = 'EventDuration';
$VAR1 = 'SplTitle';
$VAR1 = 'EventStartTime';
$VAR1 = 'OverlappedEventFlg';
$VAR1 = 'AuditoriumId';
$VAR1 = 'KdmFlg';
$VAR1 = 'ImportedAnalogFlg';
$VAR1 = 'EventBodyColor';
$VAR1 = 'ShowDuration';
$VAR1 = 'EventEndTime';
$VAR1 = 'SpokenLang';
####
#!/usr/bin/perl
use strict;
use warnings;
use XML::Simple;
use Data::Dumper;
use List::MoreUtils qw( each_array );
## test script to verify the way xml is parsed##
## $xmlfile is set to data of a format that would be expected to be passed to this if used in a loop ##
my $xmlfile = '
-1
ListPerformances
1433796462559
TMS
2015060400000157
zClosing Shutdown 3D v6 - New
2010010100000038
zClosing Shutdown 3D v6 - New
15
15
2015-06-08T00:30:00-07:00
true
true
464
2015-06-08T00:30:00-07:00
464
false
false
true
696969
false
1
0
false
2015-06-08T00:37:44-07:00
true
0
false
true
2015060400000164
zMorning Startup 3D v3
2011061100000013
zMornnning Startup 3D v3
15
15
2015-06-08T12:10:00-07:00
true
true
10
2015-06-08T12:10:00-07:00
10
false
false
true
696969
false
1
0
false
2015-06-08T12:10:10-07:00
true
0
false
true
2015060200000562
* Movie1 3D-AV
2015060800000048
w23_3DP1_Sanandreas_SCCAP_0421pre_150605_02222_TMS_
15
15
2015-06-08T12:55:00-07:00
true
true
8195
2015-06-08T12:29:18-07:00
9737
en,en,en,en,en,en,en,en,en,en
US-G US-G US-G US-G US-G US-G US-G US-G US-G US-G
false
false
true
696969
true
1
0
false
2015-06-08T15:11:35-07:00
true
0
00343929
false
US-13
true
b863a576-d8a3-4f5d-92a7-b66f876f6d7c
Preshow
1
true
3D_Advertisement
1
a55164d0-faa7-4c7c-a688-ed36011add95
Postshow
1
2015060200000563
* Movie1 3D-AV
2015060600000017
w23_3DP1_Sanandreas_SCCAP_0421pre_150605_02062_TMS_
15
15
2015-06-08T16:05:00-07:00
true
true
8195
2015-06-08T15:42:13-07:00
9562
en,en,en,en,en,en,en,en,en,en
US-G US-G US-G US-G US-G US-G US-G US-G US-G US-G
false
false
true
FFFFFF
true
1
0
false
2015-06-08T18:21:35-07:00
true
0
00343929
false
US-13
true
760eb073-81f8-45cb-8553-484c5cecb740
Preshow
1
true
3D_Advertisement
1
a55164d0-faa7-4c7c-a688-ed36011add95
Postshow
1
';
my $performancelist = XMLin( $xmlfile,
ForceArray => 1,
KeyAttr => {
EventIn => 'EventId'
} #ventID is a unique value that I want to use as a key value ##
);
#print Dumper $performancelist;
my $filename = 'mydump.log';
open(my $fhWrite, '>', $filename)
or die "Could not open file '$filename' $!";
print $fhWrite Dumper $performancelist;
close $fhWrite
or die "Could not close file '$filename' $!";
my (@frameNamelinesContainData,@packIdlinesContainData);
open(my $fhRead, '<', $filename)
or die "Could not open file '$filename' $!";
my @dataArray = <$fhRead>;
my $lineNumber = 0;
foreach my $line (@dataArray) {
$lineNumber++;
if ($line =~ /FrameName/) {
push @frameNamelinesContainData , $lineNumber;
}
elsif ($line =~ /PackId/) {
push @packIdlinesContainData , $lineNumber;
}
}
close $fhRead
or die "Could not close file '$filename' $!";
splice @frameNamelinesContainData, 1, 1;
splice @frameNamelinesContainData, 3, 1;
my %output;
my $ea = each_array( @frameNamelinesContainData, @packIdlinesContainData );
while ( my( $a, $b ) = $ea->() ) {
$dataArray[$a] =~ s/^\s+|\s+$//g;
$dataArray[$b] =~ s/^\s+|\s+$//g;
$output{'FrameName'}{$dataArray[$b]} = $dataArray[$a];
}
print Dumper \%output;
__DATA__
$VAR1 = {
'FrameName' => {
'\'b863a576-d8a3-4f5d-92a7-b66f876f6d7c\'' => '\'Preshow\'',
'\'a55164d0-faa7-4c7c-a688-ed36011add95\'' => '\'Postshow\'',
'\'760eb073-81f8-45cb-8553-484c5cecb740\'' => '\'Preshow\''
}
};