Your task is recursive in nature. Here is one way to approach it:
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
my %tifs = (
'2014-06-01 00:00:00' => 'file_01.tif',
'2014-06-02 00:00:00' => 'file_02.tif',
'2014-06-03 00:00:00' => 'file_03.tif',
'2014-06-04 00:00:00' => 'file_04.tif',
);
hashmath( sort( keys( %tifs ) ) );
exit;
sub hashmath {
my @times = @_;
print '@times has ' . scalar( @times ) . " elements\n";
print Dumper(\@times);
my $time = shift( @times );
for my $next_time ( @times ) {
# do math and whatever here
print "Subtracting $time from $next_time\n";
}
hashmath( @times ) if @times > 1;
return;
}
__END__
Here is the output:
$ perl hashmath.pl
@times has 4 elements
$VAR1 = [
'2014-06-01 00:00:00',
'2014-06-02 00:00:00',
'2014-06-03 00:00:00',
'2014-06-04 00:00:00'
];
Subtracting 2014-06-01 00:00:00 from 2014-06-02 00:00:00
Subtracting 2014-06-01 00:00:00 from 2014-06-03 00:00:00
Subtracting 2014-06-01 00:00:00 from 2014-06-04 00:00:00
@times has 3 elements
$VAR1 = [
'2014-06-02 00:00:00',
'2014-06-03 00:00:00',
'2014-06-04 00:00:00'
];
Subtracting 2014-06-02 00:00:00 from 2014-06-03 00:00:00
Subtracting 2014-06-02 00:00:00 from 2014-06-04 00:00:00
@times has 2 elements
$VAR1 = [
'2014-06-03 00:00:00',
'2014-06-04 00:00:00'
];
Subtracting 2014-06-03 00:00:00 from 2014-06-04 00:00:00
$
You must always remember that the primary goal is to drain the swamp even when you are hip-deep in alligators.