date2.pm

来自「PERL语言资料 可以用于PERL程序设计」· PM 代码 · 共 85 行

PM
85
字号
#!/usr/bin/perl
# Fig 14.20: Date2.pm
# Implementation of autoloaded date2 class.

package Date2;
use strict;
use warnings;

my @months = ( 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 );

sub new
{
   my $object = shift();
   my $class = ref( $object ) || $object;
   
   my $date = { year => 1000,
                month => 1,
                day => 1, };
                   
   bless( $date, $class );
   return $date;
}

sub AUTOLOAD
{
   my $object = shift();
   my $type = ref( $object ) ||
      die( "$object is not an object" );
   
   my $name = $Date2::AUTOLOAD;
   
   $name =~ s/.*://;
   exit() if ( $name eq 'DESTROY' );
   
   unless ( exists( $object->{ $name } ) ) {
      die( "Cannot access '$name' field of class $type" );
   }

   if ( @_ ) {
      return $object->{ $name } = shift();
   }
   else {
      return $object->{ $name };
   }
}

sub setDate
{
   if ( @_ == 4 ) {
      my $object = shift();

      $object->year( $_[ 0 ] );
      $object->month( $_[ 1 ] );
      $object->day( $_[ 2 ] );
   }
   else {
      print( "the .\n" );
   }
}

sub print
{
   my $object = shift();
   print( $object->month );
   print( "/" );
   print( $object->day );
   print( "/" );
   print( $object->year );
}

return 1;

###########################################################################
#  (C) Copyright 2001 by Deitel & Associates, Inc. and Prentice Hall.     #
#  All Rights Reserved.                                                   #
#  DISCLAIMER: The authors and publisher of this book have used their     #
#  best efforts in preparing the book. These efforts include the          #
#  development, research, and testing of the theories and programs        #
#  to determine their effectiveness. The authors and publisher make       #
#  no warranty of any kind, expressed or implied, with regard to these    #
#  programs or to the documentation contained in these books. The authors #
#  and publisher shall not be liable in any event for incidental or       #
#  consequential damages in connection with, or arising out of, the       #
#  furnishing, performance, or use of these programs.                     #
###########################################################################

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?