Acme-UNIVERSAL-new

 view release on metacpan or  search on metacpan

lib/Acme/UNIVERSAL/new.pm  view on Meta::CPAN

	return if        $ctor == \&UNIVERSAL::new;
	return 1;
}

sub get_symbols
{
	my $table = shift;
	return map  { my $name = $_; s/::$//; $name => $_ }
	       grep { /::$/ }
		   keys %$table;
}

sub get_ref
{
	my @refs = ( \(my $foo), {}, [], sub {}, do { local *FOO; \*FOO } );
	return $refs[ rand( @refs ) ];
}

1; # End of Acme::UNIVERSAL::new

__END__

=head1 NAME

Acme::UNIVERSAL::new - the only constructor you ever need

=head1 VERSION

Version 0.01

=head1 SYNOPSIS

C<Acme::UNIVERSAL::new> provides C<UNIVERSAL::new()>, the only constructor you
will ever need:

    use Acme::UNIVERSAL::new;

    my $q   = UNIVERSAL::new( 'CGI' );
	my $dbh = UNIVERSAL::new( 'dbi:Pg:dbname=my_db', '', '', {} );

    # ...

Just call C<UNIVERSAL::new()> as a function, passing whatever arguments you
want, and you will receive an appropriate object.

=head1 FUNCTIONS

This module provides only one useful function:

=head2 C<UNIVERSAL::new>

The universal constructor.  Pass in arguments.  Get back an object.  What could
be easier?

There are a few other functions:

=head2 C<get_class( $symbol_table, $name_prefix )>

Returns a random class name, after finding everything that looks like a class
beneath the given C<$symbol_table> reference named C<$name_prefix>.  If you
pass neither argument, this starts in the main symbol table.

=head2 C<get_ref()>

Returns a random blessable reference.

=head2 C<has_constructor( $class_name )>

Returns true if the given class has a constructor named C<new()> that is I<not>
C<UNIVERSAL::new()>.

=head2 C<get_symbols( $symbol_table )>

Returns a hash of symbol tables and their plain names.

=head1 AUTHOR and COPYRIGHT

Copyright 2006 chromatic, C<< chromatic at wgz dot org >>

=head1 BUGS

None.  Seriously.  Don't file any.

=head1 LICENSE

You may use, modify, and distribute this module under the same terms as Perl
itself.

=cut



( run in 0.805 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )