in reply to Re^2: Overwriting Hash / Array
in thread Overwriting Hash / Array

I've refactored your code slightly and I hope you can see how the act loop is setting the same hash element each time. Add the $debug variable to see. What structure do you want ?

foreach my $i ( 1 .. $scheduled_export_days ){ my %column_data_export; my %column_data_import; $column_data_export{SCHEDULE} = $schedule_hour; $column_data_export{UNDEF} = 1; my $debug=0; for my $act (@{$bi->{$customer}->{$domain}->{$host}->{BACKUPDATA}}){ + ++$debug; my $imp_exp_type = $act->{ACTION_TYPE}; my $imp_exp_status = $act->{STATUS}; my @schedule_time = split(/:/, $schedule_hour); my $minutes_range = ($schedule_time[1]+30) % 60; # import code if ($imp_exp_type eq "IMPORT"){ my ($imp_formated_hour,undef) = hhmm($act->{ENDDATE_SEC},$unit) $column_data_import{SCHEDULE} = $imp_formated_hour; $column_data_import{UNDEF} = $debug ;#1 ; } # export code } push (@columns_export, \%column_data_export); push (@columns_import, \%column_data_import); } sub hhmm { my ($s,$unit) = @_; my @tmp = split / /,$unit->formatDateTime($s); my ($hr,$min) = split /:/, $tmp[1]; return ("$hr:$min",$tmp[0]); }
poj

Replies are listed 'Best First'.
Re^4: Overwriting Hash / Array
by iRemix94 (Sexton) on Jul 28, 2015 at 10:48 UTC

    my wished structure is like the dumper result in my original post. As you can see there, the SCHEDULE_COLUMNS_IMPORT has several entries. The schedule value here should display the value of $imp_formated_hour from all the existing export reports. So it should basically be the same as the SCHEDULE_COLUMNS_EXPORT, just with other schedule_values. The difference here is, the schedule value for the export reports are gathered in a loop before. Not like the schedule values of the import reports. I don't know how I can change my code so that it doesn't overwrite the hash all the time .. sorry, my PERL knowledge is still very lacking :/

      Are the import times held like this and if so how do they relate to variable $scheduled_export_days ?.
      #!perl use strict; use Data::Dump 'pp'; my $bi->{customer}{domain}{host}{BACKUPDATA}=[ { ENDDATE_SEC => 1 }, { ENDDATE_SEC => 2 }, { ENDDATE_SEC => 3 }, { ENDDATE_SEC => 4 }, { ENDDATE_SEC => 5 }, ]; pp $bi; for my $act (@{$bi->{customer}->{domain}->{host}->{BACKUPDATA}}){ print $act->{ENDDATE_SEC}."\n"; }
      poj

        Yes, that's how the import times are held. Basically, the import start time is the export finish time. As soon as the export finished, the import starts.

        The variable $scheduled_export_days tells, how many different import / export are stored. It can be max 7, 1 for each day. If its value is e.g 5, than there are export reports for the last 5 days. I need it, because I have to write GUI-Monitor, which displays the last 7 days and the fitting import / export report for each day.

        I hope this information helps you out!