develooper Front page | perl.perl6.language | Postings from December 2001

RE: Perl 6's Exporter

Thread Previous | Thread Next
From:
Brent Dax
Date:
December 22, 2001 02:32
Subject:
RE: Perl 6's Exporter
Message ID:
FJELLKOPEAGHOOODKEDPIEOBCOAA.brentdax@cpan.org
Bryan C. Warnock:
# On Saturday 22 December 2001 02:29 am, Brent Dax wrote:
# > I've been thinking about improvements that could be made to
# Exporter for
# > Perl 6.
# >
# > 	1. Choosing where to export to:
# > 		use Data::Dumper 'Dumper' => 'dumpvar';
# > 		#exports Data::Dumper::Dumper to Main::dumpvar
# (or whatever)
#
# Where to import to.  It's probably not a good idea to export
# into someone
# else's namespace.  (Pull vs Push).

Ack, I hate terminology bugs.  Import to.  As for someone else's
namespace, under the current implementation (*bursts out laughing*) that
don't work too well anyway.

# > 	2. Built-in switch handling:
# > 		use Data::Dumper ('Dumper' : qw(+Indent=2 +Useqq));
# > 		#imports Dumper, sets $Data::Dumper::Indent=2, and
# > 		# does $Data::Dumper::Useqq is true
#
# Is it more or less confusing (overall) to be mixing
# importation with simple,
# non-imported data initialization, as opposed to having it all
# be imported
# (with optional data initialization)?

There are already modules that do things like this.  For example:

	use CGI '-debug';

I'm just building that capability into Exporter.  The other possibility
I can think of for it is like:

	use Data::Dumper : '-Useqq';	#on
	no Data::Dumper  : '-Useqq';	#off

Except that will try to do Data::Dumper::import('Data::Dumper' :
'-Useqq'), unless we special case use/no.  Ack.  Maybe we can just mix
switches and non-switches:

	use Data::Dumper qw(Dumper -Useqq);

Should work, I suppose.

BTW, can we genericize 'use' to work like an indirect-object method?

	use Data::Dumper;
	Data::Dumper.use;		#same thing

# > 	3. Warnings about conflicts:
# > 		use warnings 'Exporter';
# > 		sub Dumper { ... }
# > 		use Data::Dumper qw(Dumper);
# > 		#prints out a warning (not just 'redefined
# subroutine', either).
# > 	4. For modules, saying 'use Exporter' should be enough
# to get import.
# > 	   If you don't want Exporter's import(), just C<use
# Exporter()>.
# > 	5. In addition to @EXPORT/@EXPORT_OK/%EXPORT_TAGS,
# provide a way to do
# > 	   it on the 'use Exporter' line.
# >
# > So, with those requirements and what knowledge of Perl 6 I have, I
# > present a preliminary Exporter.  I typed it directly into
# the mailer, so
# > there's a good chance of mistakes.  If anyone spots any
# mistakes in it,
# > let me know.
#
# Well, I can't get it to run....  :-)

Darn, I was hoping you had brought a Perl 6 binary back from the
future... :^)  Still, can you give it a once-over and tell me if you
notice anything?

--Brent Dax
brentdax@cpan.org
Configure pumpking for Perl 6

"Nothing important happened today."
    --George III of England's diary entry for 4-Jul-1776


Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About