Para escribir un método para una clase (package) dada, basta con escribir la correspondiente subrutina dentro del paquete.
Así el método get_author
queda descrito mediante la subrutina:
sub get_author { $_[0]->{_author} }Sin embargo, llamar a
Biblio::Doc::get_author
como método
conlleva una extensión a la sintáxis flecha de Perl. Si se tiene
que $obj
es una referencia a un objeto de la clase
Biblio::Doc
, podemos acceder a cualquier método del
paquete usando la notación $obj->method
donde
method
es cualquier método de la clase.
Por ejemplo:
$obj->get_author()Es equivalente a
Biblio::Doc::get_author($obj);Esto es: cuando una subrutina es llamada como método, la lista de argumentos que recibe comienza con la referencia al objeto a través del cual fué llamada y va seguida de los argumentos que fueron explicitados en la llamada al método.
Observe que la última llamada trata a get_author
como una subrutina
ordinaria, mientras que la primera la usa ''como método''.
La sintáxis ''flecha'' para la llamada a un método es consistente
con el uso de la flecha para otros tipos de referencias en Perl. Así,
al igual que escribimos $hsh_ref->{clave}
o bien
$sub_ref->(4,7,8)
también escribimos $obj_ref->metodo(@args)
.
Una diferencia de esta última notación con las anteriores estriba
en que el referente tiene diferentes conductas, esto es, tiene varios
metodos y la conducta concreta que queremos producir se especifica
escribiendo el nombre del método después de la flecha.
Casiano Rodríguez León