[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