code_junkie

How important is it to indicate if a class implements an interface in Perl?

Nov 12th, 2011
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.19 KB | None | 0 0
  1. package Foo::Type::Bar;
  2. sub generate_foo {
  3. # about 5-100 lines of code
  4. return stuff here;
  5. }
  6.  
  7. my $bar_foo = Foo::Type::Bar->generate_foo;
  8. my $baz_foo = Foo::Type::Baz->generate_foo;
  9.  
  10. package Foo::Type::Bar;
  11. use base 'Foo::Type';
  12. sub generate_foo {
  13. ...
  14. return stuff here;
  15. }
  16.  
  17. $unknown->doodle() if $unknown->can( 'doodle' );
  18.  
  19. $path_or_OS_I_dont_know_which->format( "c:", 'y' );
  20.  
  21. if ( $duck->can( 'talk' ) && $duck->can( 'walk' )) {
  22. $duck->walk();
  23. $duck->talk();
  24. }
  25.  
  26. if ( $cand->can( 'walk' ) && $cand->can( 'talk' ) && ... && $cand->can( 'gargle' )) {
  27. ...
  28. }
  29.  
  30. $cand->snicker() if $cand->can( 'snicker' );
  31.  
  32. our @ISA = qw<... Date::Compatible ...>;
  33.  
  34. sub UNIVERSAL::is_one {
  35. my ( $self, @args ) = @_;
  36. foreach my $pkg ( @args ) {
  37. return 1 if $self->isa( $pkg );
  38. }
  39. return 0;
  40. }
  41.  
  42. sub UNIVERSAL::is_compatible_with {
  43. my ( $self, $class ) = @_;
  44. return $self->is_one( $class, "${class}::Compatible" );
  45. }
  46.  
  47. my $bar_foo = Foo::Type::Bar->generate_foo
  48.  
  49. my $bar_foo = Foo::Type::Bar::generate_foo
  50.  
  51. if (Foo::Type::Bar->isa('Foo::Type')) { ... }
  52.  
  53. my $bar_foo = Foo::Type::Bar::generate_foo;
  54.  
  55. Foo::Bar->generate
  56. Foo::Baz->generate
Add Comment
Please, Sign In to add comment