package Calendar; # class variables my $sync_dbm_obj; # constructor sub new { my $class = shift; my %args = @_; my $calendar = {}; $sync_dbm_obj = tie(%{$calendar}, 'MLDBM::Sync', "$args{DIR}\\$args{year}.db", O_CREAT|O_RDWR, 0640) or die "can't open tie to $args{year}.db: $!"; # if just created, initialize hash with default values if( !$calendar->{months} ) { $sync_dbm_obj->Lock; $calendar->{year} = $args{year}; $calendar->{months} = {}; my $aref = $calendar->{months}; foreach my $month (1..12) { $aref->{$month} = _init_days($calendar->{year}, $month); } $calendar->{months} = $aref; $sync_dbm_obj->UnLock; } return bless $calendar, $class; } #### my $calendar1 = Calendar->new(year => "2002", DIR => "c:\a_dir"); my $calendar2 = Calendar->new(year => "2003", DIR => "c:\a_dir");