#!/usr/bin/perl use strict; use warnings; use Data::Dumper; #test program #set up some test data: my $form; $form->{"id"} = '12594'; $form->{"cleared"} = '1'; print qq| ID: $form->{"id"} $form->{"cleared"}\n|; #set up what we seem to get from the web program #an array called $form->{PR} #another unnamed array called $VAR1 by data dumper? #var1 contains a list of hashes @{ $form->{PR} } = ( { 'source' => '8', 'name' => [ 'Telecom' ], 'description' => 'Telecom', 'entry_id' => 1583, 'transdate' => '08-10-2013', 'amount' => '-80', 'fx_transaction' => 0, 'id' => 10368, 'cleared' => 0 }, { 'source' => '', 'name' => [ 'iris' ], 'description' => 'iris', 'entry_id' => 1668, 'transdate' => '02-01-2014', 'amount' => '100', 'fx_transaction' => 0, 'id' => 12585, 'cleared' => 0 }, { 'source' => '12', 'name' => [ 'critter' ], 'description' => 'critter', 'entry_id' => 1670, 'transdate' => '02-01-2014', 'amount' => '12', 'fx_transaction' => 0, 'id' => 12592, 'cleared' => 0 }, { 'source' => '12', 'name' => [ 'critter' ], 'description' => 'critter', 'entry_id' => 1672, 'transdate' => '02-01-2014', 'amount' => '12', 'fx_transaction' => 0, 'id' => 12594, 'cleared' => 0 } ); #see if it loks right? print "PR:\n", Dumper $form->{PR}; #attempt look up a value: #my $elem ; foreach my $key ( @{ $form->{PR} } ) { if ( UNIVERSAL::isa( $key,'HASH') ) { #my %elem = %$key ; my %elem = %{$key} ; print "HASH ELEM:\n", Dumper %elem; foreach my $var ( keys %elem ) { if ($var->{id} == $form->{"id"}){ print qq|\t\telem->key $var->{id} eq $form->{"id"}\n|; print qq|\t\t cleared? $var->{cleared} $form->{"cleared"}\n|; if ( $var->{cleared} != $form->{"cleared"} ){ $var->{cleared} = $form->{"cleared"}; print qq|\t\t FIXED $var->{cleared} $form->{"cleared"}\n|; } }#end if else {print qq|var id: $var->{id} ne form $form->{"id"}\n|;} }#end loop array } if ( UNIVERSAL::isa( $key,'ARRAY') ) { my @elem = @$key ; #my @elem = $key ; #go down the columns print "ARRAY ELEM:\n", Dumper @elem; foreach my $var ( @elem ) { if ($var->{id} == $form->{"id"}){ print qq|\t\telem->key $var->{id} eq $form->{"id"}\n|; print qq|\t\t cleared? $var->{cleared} $form->{"cleared"}\n|; if ( $var->{cleared} != $form->{"cleared"} ){ $var->{cleared} = $form->{"cleared"}; print qq|\t\t FIXED $var->{cleared} $form->{"cleared"}\n|; } }#end if else {print qq|var id: $var->{id} ne form $form->{"id"}\n|;} }#end loop array } }#end for each elem print "done\n";