Métodos de Acceso a los Atributos

También hemos extendido la subrutina AUTOLOAD para que compruebe (líneas 74 y 82) que el método de acceso requerido está permitido.

71	sub AUTOLOAD {
72	  no strict "refs";
73	  my $self = shift;
74	  if (($AUTOLOAD =~ /\w+::\w+::get(_.*)/) && ($self->_accesible($1,'read'))) {
75	    my $n = $1;
76	    die "Error in $AUTOLOAD: Illegal attribute\n" unless exists $self->{$n};
77	
78	    # Declarar el metodo get_*****
79	    *{$AUTOLOAD} = sub { return $_[0]->{$n}; };
80	
81	    return $self->{$n};
82	  } elsif (($AUTOLOAD =~ /\w+::\w+::set(_.*)/) && ($self->_accesible($1,'write'))) {
83	    my $n = $1;
84	    die "Error in $AUTOLOAD: Illegal attribute\n" unless exists $self->{$n};
85	    $self->{$n} = shift;
86	
87	    # Declarar el metodo set_*****
88	    *{$AUTOLOAD} = sub { $_[0]->{$n} = $_[1]; };
89	  } else {
90	    die "Error: Function $AUTOLOAD not found\n";
91	  }

Casiano Rodríguez León
Licencia de Creative Commons
Principios de Programación Imperativa, Funcional y Orientada a Objetos Una Introducción en Perl/Una Introducción a Perl
por Casiano Rodríguez León is licensed under a Creative Commons Reconocimiento 3.0 Unported License.

Permissions beyond the scope of this license may be available at http://campusvirtual.ull.es/ocw/course/view.php?id=43.
2012-06-19