El ejemplo que sigue ilustra la idea de usar singletons.
Aunque los objetos $a y $b pertenecen a la misma
clase, sólo el objeto $a dispone del método dump.
Para crear un método singleton usamos el método singleton_method.
Puesto que queremos que todo objeto pueda crear sus métodos
singleton debemos ubicar singleton_method en la clase
UNIVERSAL.
hp@nereida:~/Lperl/src/advanced_perl_programming2$ cat -n singleton.pl
1 #!/usr/local/bin/perl -w
2 use strict;
3 use Class::SingletonMethod;
4
5 my $a = Some::Class->new(yuyu => 4, chuf => [ 1..5]);
6 my $b = Some::Class->new(yuyu => 8, chuf => [0..9]);
7
8 $a->singleton_method( dump => sub {
9 my $self = shift;
10 require Data::Dumper;
11 no warnings;
12 $Data::Dumper::Indent = 0;
13 print STDERR Data::Dumper::Dumper($self)."\n"
14 });
15
16 $a->dump; # Prints a representation of the object.
17 $b->dump; # Can't locate method "dump"
18
19 package Some::Class;
20
21 sub new {
22 my $class = shift;
23
24 bless { @_ }, $class;
25 }
Casiano Rodríguez León
