Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

UNIVERSAL::extends

by miyagawa (Chaplain)
on Jan 11, 2002 at 23:23 UTC ( #138102=sourcecode: print w/ replies, xml ) Need Help??

Category: Miscellaneous
Author/Contact Info Tatsuhiko Miyagawa <miyagawa@bulknews.net>
Description: Syntactic sugar of base.pm for Java programmers.
package UNIVERSAL::extends;

use strict;
use vars qw($VERSION);
$VERSION = 0.01;

package UNIVERSAL;
no strict 'refs';

sub extends {
    my($child, @base) = @_;
    my $pkg = caller(0);
    die "extends() should be called with class." if ref $child;
    die "inheritor/caller mismatch: $child ne $pkg" if $child ne $pkg;
    eval <<BASE;
package $child;
use base qw(@base);
BASE
    ;
}

1;
__END__

=head1 NAME

UNIVERSAL::extends - syntactic sugar of base.pm

=head1 SYNOPSIS

  use UNIVERSAL::extends;

  package Dog;
  Dog->extends('Animal');
  # same as use base qw(Animal)

=head1 DESCRIPTION

UNIVERSAL::extends is a syntactic sugar of base.pm for Java programmer
+s.

=head1 AUTHOR

Tatsuhiko Miyagawa E<lt>miyagawa@bulknews.netE<gt>

This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.

=head1 SEE ALSO

L<UNIVERSAL::exports>, L<Class::Fields>, L<Class::Virtual>

=cut

Comment on UNIVERSAL::extends
Download Code

Back to Code Catacombs

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: sourcecode [id://138102]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others chilling in the Monastery: (11)
As of 2015-07-01 20:40 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (19 votes), past polls