Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic
 
PerlMonks  

Re: Finding array element

by sachmet (Scribe)
on Mar 28, 2001 at 23:22 UTC ( [id://67913]=note: print w/replies, xml ) Need Help??


in reply to Finding array element

Date::Calc is great for this sort of thing:
#!/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];
Of course, this could be optimized more fully, but it should be enough to get you started.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://67913]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others goofing around in the Monastery: (1)
As of 2024-04-25 03:40 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found