in reply to Finding array element
Of course, this could be optimized more fully, but it should be enough to get you started.#!/usr/bin/perl -w use strict; use Date::Calc qw(Delta_Days); my $curdiff = 1e10; my $nextrow = 0; my $array = [ { date => '2001-02-01', more => 1 }, { date => '2001-03-31' }, { date => '2001-04-15' } ]; my $today = '2001-03-28'; my ($nowy,$nowm,$nowd) = split(/-/,$today); foreach (my $rownum = 0; $rownum < scalar(@{$array}); $rownum++) { my ($nexty,$nextm,$nextd) = split(/\-/,${$array->[$rownum]}{'date'}) +; my $delta = Delta_Days($nowy,$nowm,$nowd,$nexty,$nextm,$nextd); next if $delta < 1; if ($delta < $curdiff) { $nextrow = $rownum; $curdiff = $delta; } } # for insert mark $array->[$nextrow]->{'isnext'} = 1; # for array ref my $arrayref = $array->[$nextrow];
|
|---|