use strict;
use warnings;
use Date::Calc qw( Today Day_of_Week 
                   Add_Delta_Days
                   Day_of_Week_to_Text 
                   Date_to_Text );

my @today = Today();
my $searching_dow = 6; # Samstag
my $current_dow = Day_of_Week(@today);
my (@prev, @next, $dow);

if ($searching_dow == $current_dow)
  {
  @prev = Add_Delta_Days(@today,-7);
  @next = Add_Delta_Days(@today,+7);
  }
elsif ($searching_dow > $current_dow)
  {
  @next = Add_Delta_Days(@today,
          $searching_dow - $current_dow);
  @prev = Add_Delta_Days(@next,-7);
  }
else
  {
   @prev = Add_Delta_Days(@today,
          $searching_dow - $current_dow);
  @next = Add_Delta_Days(@prev,+7);
  }

$dow = Day_of_Week_to_Text($searching_dow);

print "Today is:      ", ' ' x length($dow),
                             Date_to_Text(@today), "\n";
print "Last $dow was:     ", Date_to_Text(@prev),  "\n";
print "Next $dow will be: ", Date_to_Text(@next),  "\n";
