[Cascavel-pm] evitando estruturas "switch-case" em métodos de uma classe
Nilson Santos Figueiredo Junior
acid06 em gmail.com
Sexta Março 30 19:41:40 PDT 2007
On 3/30/07, Flavio S. Glock <fglock em gmail.com> wrote:
> Ah, a propósito desta observação:
>
> use strict;
> use warnings;
>
> package Obj;
>
> sub to_xml {
> print 'process xml...';
> }
>
> sub to_html {
> print 'process html...';
> }
>
> sub dispatch {
> no strict "refs";
> $_[1]->(@_[0,2..$#_]);
> };
>
> package main;
>
> my $obj = bless {}, 'Obj';
> foreach (qw(to_xml to_html)) {
> $obj->dispatch($_);
> }
E se eu for um mal usuário desta classe?
$obj->dispatch( sub {
no strict 'refs';
map { undef *{ref($_[0])."::$_"} }
grep {$_ =~ /^to_/ and defined *{ref($_[0])."::$_"}{CODE} }
keys %{ref($_[0]).'::'};
} );
;-)
-Nilson Santos F. Jr.
Mais detalhes sobre a lista de discussão Cascavel-pm