⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 employeeclosure.pm

📁 PERL语言资料 可以用于PERL程序设计
💻 PM
字号:
#!/usr/bin/perl
# Fig. 14.16: EmployeeClosure.pm
# Encapsulating data using closures.

package EmployeeClosure;

use strict;
use warnings;
use Date;

sub new
{
   my $object = shift();
   my $class = ref( $object ) || $object;
   
   my $employee =  { firstName => shift(),
                     lastName => shift(), };
   
   my $hireDay = new Date;

   if ( $_[ 0 ] ) {
      my ( $month, $day, $year ) = split( /\//, $_[ 0 ] );
      $hireDay->day( $day );
      $hireDay->month( $month );
      $hireDay->year( $year );
   }

   $employee->{ hireDay } = $hireDay;
   
   my $self = sub {
                 my $field = shift();
                 
                 $employee->{ $field } = shift() if ( @_ );
                 return $employee->{ $field };
              };
   
   bless( $self, $class );
   return $self;
}

sub firstName
{
   my $self = shift();

   &{ $self }( "firstName", @_ );
}

sub lastName
{
   my $self = shift();
   
   &{ $self }( "lastName", @_ );
}

sub hireDay
{
   my $self = shift();
   
   my $date = &{ $self }( "hireDay" );

   $date->setDate( @_ ) if ( @_ );
   
   return $date;
}

sub write
{
   my $self = shift();

   print( "Hello, my name is ", $self->( 'firstName' ), ".\n" );
   print( "I was hired on " );

   my $date = $self->( 'hireDay' );
   $date->print();
   print( ".\n" );
}

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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -