#!/usr/bin/perl -w use strict; use warnings; use diagnostics; my %env; add_ausfuehrungsrhythmen (\%env); my $naechster = &{$env{ausfuehrungsrhythmus}{monatlich}{berechnung}}('24.10.2010'); print "Naechster: $naechster\n"; $naechster = &{$env{ausfuehrungsrhythmus}{jaehrlich}{berechnung}}('24.10.2010'); print "Naechster: $naechster\n"; sub add_ausfuehrungsrhythmen { my ($env) = @_; %{$env -> {ausfuehrungsrhythmus}{monatlich}} = ( anzeige => 'Monatlich', berechnung => sub { use Date::Calc qw ( Add_Delta_YMD ); my $letzte_ausf = shift; my $naechste = sprintf ('%02u.%02u.%04u', reverse Add_Delta_YMD (reverse (split /\./,$letzte_ausf),0,1,0)); return $naechste; }, ); %{$env -> {ausfuehrungsrhythmus}{jaehrlich}} = ( anzeige => 'Jährlich', berechnung => sub { my $letzte_ausf = shift; my $naechste = sprintf ('%02u.%02u.%04u', reverse Add_Delta_YMD (reverse (split /\./,$letzte_ausf),1,0,0)); return $naechste; }, ); }