#!/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\'' } };