#!/usr/bin/perl
# File: useDate

# Example of tying a hash

use Date;

%a_date=('month' => 3, 'day' => 13, 'year' => 1998);
print "\$a_date is "
      . "$a_date{'month'}/$a_date{'day'}/$a_date{'year'}\n";

print "\nNow tying...\n";
tie %a_date, Date;
print "\$a_date is "
      . "$a_date{'month'}/$a_date{'day'}/$a_date{'year'}\n";
$a_date{'month'} = 8;
print "\$a_date is "
      . "$a_date{'month'}/$a_date{'day'}/$a_date{'year'}\n";

$a_date{'month'} = 13; # No assignment: 13 is out of range
print "After invalid attempt, ";
print "\$a_date is "
      . "$a_date{'month'}/$a_date{'day'}/$a_date{'year'}\n";

$a_date{'month'} = 12;
print "After valid attempt, ";
print "\$a_date is "
      . "$a_date{'month'}/$a_date{'day'}/$a_date{'year'}\n";

untie %a_date;

print "\nDone tying...\n";

print "\$a_date is "
      . "$a_date{'month'}/$a_date{'day'}/$a_date{'year'}\n";

tie %birthday,'Date',('day'=>10,'month'=>8,'year'=>1955);
print "My birthday is ", tied (%birthday)->toString(), "\n";

print "keys in birthday are: ",join(" ",keys(%birthday)),"\n";
while (($key,$value) = each(%birthday))
{
  print "$key = $value\n";
}

delete $birthday{month};
while (($key,$value) = each(%birthday))
{
  print "$key = $value\n";
}


