Browse files

import to manxome svn

  • Loading branch information...
0 parents commit 7645f2e7d94fb41a65fd1aefb095b705d079569b @rjbs committed Dec 25, 2005
12 Changes
@@ -0,0 +1,12 @@
+Revision history for Sub-Install
+
+0.03 2005-11-22 19:00
+ install_installers to make Sub::Installer history
+
+0.02 2005-11-22 11:26
+ improved detection of sub names via B
+ 100% coverage
+
+0.01 2005-11-21 22:28
+ the first version
+
15 MANIFEST
@@ -0,0 +1,15 @@
+Changes
+lib/Sub/Install.pm
+Makefile.PL
+MANIFEST
+META.yml # Will be created by "make dist"
+README
+t/00-load.t
+t/auto_as.t
+t/install.t
+t/misc_errors.t
+t/pod-coverage.t
+t/pod.t
+t/reinstall.t
+t/SI_install.t
+t/SI_reinstall.t
11 MANIFEST.bak
@@ -0,0 +1,11 @@
+Changes
+lib/Sub/Install.pm
+Makefile.PL
+MANIFEST
+META.yml # Will be created by "make dist"
+README
+t/00-load.t
+t/install.t
+t/pod-coverage.t
+t/pod.t
+t/reinstall.t
11 META.yml
@@ -0,0 +1,11 @@
+# http://module-build.sourceforge.net/META-spec.html
+#XXXXXXX This is a prototype!!! It will change in the future!!! XXXXX#
+name: Sub-Install
+version: 0.03
+version_from: lib/Sub/Install.pm
+installdirs: site
+requires:
+ Test::More: 0
+
+distribution_type: module
+generated_by: ExtUtils::MakeMaker version 6.17
744 Makefile
@@ -0,0 +1,744 @@
+# This Makefile is for the Sub::Install extension to perl.
+#
+# It was generated automatically by MakeMaker version
+# 6.17 (Revision: 1.133) from the contents of
+# Makefile.PL. Don't edit this file, edit Makefile.PL instead.
+#
+# ANY CHANGES MADE HERE WILL BE LOST!
+#
+# MakeMaker ARGV: ()
+#
+# MakeMaker Parameters:
+
+# ABSTRACT_FROM => q[lib/Sub/Install.pm]
+# AUTHOR => q[Ricardo Signes <rjbs@cpan.org>]
+# DIR => []
+# DISTNAME => q[Sub-Install]
+# NAME => q[Sub::Install]
+# NO_META => q[1]
+# PL_FILES => { }
+# PREREQ_PM => { Test::More=>q[0] }
+# VERSION => q[0.03]
+# clean => { FILES=>q[Sub-Install-* cover_db] }
+# dist => { PREOP=>q[$(PERL) -I. -MModule::Install::Admin -e "dist_preop(q($(DISTVNAME)))"] }
+# test => { TESTS=>undef }
+
+# --- MakeMaker post_initialize section:
+
+
+# --- MakeMaker const_config section:
+
+# These definitions are from config.sh (via /usr/local/lib/perl5/5.8.7/darwin-2level/Config.pm)
+
+# They may have been overridden via Makefile.PL or on the command line
+AR = ar
+CC = cc
+CCCDLFLAGS =
+CCDLFLAGS =
+DLEXT = bundle
+DLSRC = dl_dlopen.xs
+LD = env MACOSX_DEPLOYMENT_TARGET=10.3 cc
+LDDLFLAGS = -bundle -undefined dynamic_lookup -L/usr/local/lib
+LDFLAGS = -L/usr/local/lib
+LIBC = /usr/lib/libc.dylib
+LIB_EXT = .a
+OBJ_EXT = .o
+OSNAME = darwin
+OSVERS = 8.1.0
+RANLIB = :
+SITELIBEXP = /usr/local/lib/perl5/site_perl/5.8.7
+SITEARCHEXP = /usr/local/lib/perl5/site_perl/5.8.7/darwin-2level
+SO = dylib
+EXE_EXT =
+FULL_AR = /usr/bin/ar
+VENDORARCHEXP =
+VENDORLIBEXP =
+
+
+# --- MakeMaker constants section:
+AR_STATIC_ARGS = cr
+DIRFILESEP = /
+NAME = Sub::Install
+NAME_SYM = Sub_Install
+VERSION = 0.03
+VERSION_MACRO = VERSION
+VERSION_SYM = 0_03
+DEFINE_VERSION = -D$(VERSION_MACRO)=\"$(VERSION)\"
+XS_VERSION = 0.03
+XS_VERSION_MACRO = XS_VERSION
+XS_DEFINE_VERSION = -D$(XS_VERSION_MACRO)=\"$(XS_VERSION)\"
+INST_ARCHLIB = blib/arch
+INST_SCRIPT = blib/script
+INST_BIN = blib/bin
+INST_LIB = blib/lib
+INST_MAN1DIR = blib/man1
+INST_MAN3DIR = blib/man3
+MAN1EXT = 1
+MAN3EXT = 3
+INSTALLDIRS = site
+DESTDIR =
+PREFIX =
+PERLPREFIX = /usr/local
+SITEPREFIX = /usr/local
+VENDORPREFIX =
+INSTALLPRIVLIB = $(PERLPREFIX)/lib/perl5/5.8.7
+DESTINSTALLPRIVLIB = $(DESTDIR)$(INSTALLPRIVLIB)
+INSTALLSITELIB = $(SITEPREFIX)/lib/perl5/site_perl/5.8.7
+DESTINSTALLSITELIB = $(DESTDIR)$(INSTALLSITELIB)
+INSTALLVENDORLIB =
+DESTINSTALLVENDORLIB = $(DESTDIR)$(INSTALLVENDORLIB)
+INSTALLARCHLIB = $(PERLPREFIX)/lib/perl5/5.8.7/darwin-2level
+DESTINSTALLARCHLIB = $(DESTDIR)$(INSTALLARCHLIB)
+INSTALLSITEARCH = $(SITEPREFIX)/lib/perl5/site_perl/5.8.7/darwin-2level
+DESTINSTALLSITEARCH = $(DESTDIR)$(INSTALLSITEARCH)
+INSTALLVENDORARCH =
+DESTINSTALLVENDORARCH = $(DESTDIR)$(INSTALLVENDORARCH)
+INSTALLBIN = $(PERLPREFIX)/bin
+DESTINSTALLBIN = $(DESTDIR)$(INSTALLBIN)
+INSTALLSITEBIN = $(SITEPREFIX)/bin
+DESTINSTALLSITEBIN = $(DESTDIR)$(INSTALLSITEBIN)
+INSTALLVENDORBIN =
+DESTINSTALLVENDORBIN = $(DESTDIR)$(INSTALLVENDORBIN)
+INSTALLSCRIPT = $(PERLPREFIX)/bin
+DESTINSTALLSCRIPT = $(DESTDIR)$(INSTALLSCRIPT)
+INSTALLMAN1DIR = $(PERLPREFIX)/share/man/man1
+DESTINSTALLMAN1DIR = $(DESTDIR)$(INSTALLMAN1DIR)
+INSTALLSITEMAN1DIR = $(SITEPREFIX)/share/man/man1
+DESTINSTALLSITEMAN1DIR = $(DESTDIR)$(INSTALLSITEMAN1DIR)
+INSTALLVENDORMAN1DIR =
+DESTINSTALLVENDORMAN1DIR = $(DESTDIR)$(INSTALLVENDORMAN1DIR)
+INSTALLMAN3DIR = $(PERLPREFIX)/share/man/man3
+DESTINSTALLMAN3DIR = $(DESTDIR)$(INSTALLMAN3DIR)
+INSTALLSITEMAN3DIR = $(SITEPREFIX)/share/man/man3
+DESTINSTALLSITEMAN3DIR = $(DESTDIR)$(INSTALLSITEMAN3DIR)
+INSTALLVENDORMAN3DIR =
+DESTINSTALLVENDORMAN3DIR = $(DESTDIR)$(INSTALLVENDORMAN3DIR)
+PERL_LIB = /usr/local/lib/perl5/5.8.7
+PERL_ARCHLIB = /usr/local/lib/perl5/5.8.7/darwin-2level
+LIBPERL_A = libperl.a
+FIRST_MAKEFILE = Makefile
+MAKEFILE_OLD = $(FIRST_MAKEFILE).old
+MAKE_APERL_FILE = $(FIRST_MAKEFILE).aperl
+PERLMAINCC = $(CC)
+PERL_INC = /usr/local/lib/perl5/5.8.7/darwin-2level/CORE
+PERL = /usr/local/bin/perl -Iinc
+FULLPERL = /usr/local/bin/perl -Iinc
+ABSPERL = $(PERL)
+PERLRUN = $(PERL)
+FULLPERLRUN = $(FULLPERL)
+ABSPERLRUN = $(ABSPERL)
+PERLRUNINST = $(PERLRUN) "-I$(INST_ARCHLIB)" "-Iinc" "-I$(INST_LIB)"
+FULLPERLRUNINST = $(FULLPERLRUN) "-I$(INST_ARCHLIB)" "-Iinc" "-I$(INST_LIB)"
+ABSPERLRUNINST = $(ABSPERLRUN) "-I$(INST_ARCHLIB)" "-Iinc" "-I$(INST_LIB)"
+PERL_CORE = 0
+PERM_RW = 644
+PERM_RWX = 755
+
+MAKEMAKER = /usr/local/lib/perl5/5.8.7/ExtUtils/MakeMaker.pm
+MM_VERSION = 6.17
+MM_REVISION = 1.133
+
+# FULLEXT = Pathname for extension directory (eg Foo/Bar/Oracle).
+# BASEEXT = Basename part of FULLEXT. May be just equal FULLEXT. (eg Oracle)
+# PARENT_NAME = NAME without BASEEXT and no trailing :: (eg Foo::Bar)
+# DLBASE = Basename part of dynamic library. May be just equal BASEEXT.
+FULLEXT = Sub/Install
+BASEEXT = Install
+PARENT_NAME = Sub
+DLBASE = $(BASEEXT)
+VERSION_FROM =
+OBJECT =
+LDFROM = $(OBJECT)
+LINKTYPE = dynamic
+
+# Handy lists of source code files:
+XS_FILES =
+C_FILES =
+O_FILES =
+H_FILES =
+MAN1PODS =
+MAN3PODS = lib/Sub/Install.pm
+
+# Where is the Config information that we are using/depend on
+CONFIGDEP = $(PERL_ARCHLIB)$(DIRFILESEP)Config.pm $(PERL_INC)$(DIRFILESEP)config.h
+
+# Where to build things
+INST_LIBDIR = $(INST_LIB)/Sub
+INST_ARCHLIBDIR = $(INST_ARCHLIB)/Sub
+
+INST_AUTODIR = $(INST_LIB)/auto/$(FULLEXT)
+INST_ARCHAUTODIR = $(INST_ARCHLIB)/auto/$(FULLEXT)
+
+INST_STATIC =
+INST_DYNAMIC =
+INST_BOOT =
+
+# Extra linker info
+EXPORT_LIST =
+PERL_ARCHIVE =
+PERL_ARCHIVE_AFTER =
+
+
+TO_INST_PM = lib/Sub/Install.pm
+
+PM_TO_BLIB = lib/Sub/Install.pm \
+ blib/lib/Sub/Install.pm
+
+
+# --- MakeMaker platform_constants section:
+MM_Unix_VERSION = 1.42
+PERL_MALLOC_DEF = -DPERL_EXTMALLOC_DEF -Dmalloc=Perl_malloc -Dfree=Perl_mfree -Drealloc=Perl_realloc -Dcalloc=Perl_calloc
+
+
+# --- MakeMaker tool_autosplit section:
+# Usage: $(AUTOSPLITFILE) FileToSplit AutoDirToSplitInto
+AUTOSPLITFILE = $(PERLRUN) -e 'use AutoSplit; autosplit($$ARGV[0], $$ARGV[1], 0, 1, 1)'
+
+
+
+# --- MakeMaker tool_xsubpp section:
+
+
+# --- MakeMaker tools_other section:
+SHELL = /bin/sh
+CHMOD = chmod
+CP = cp
+MV = mv
+NOOP = $(SHELL) -c true
+NOECHO = @
+RM_F = rm -f
+RM_RF = rm -rf
+TEST_F = test -f
+TOUCH = touch
+UMASK_NULL = umask 0
+DEV_NULL = > /dev/null 2>&1
+MKPATH = $(PERLRUN) "-MExtUtils::Command" -e mkpath
+EQUALIZE_TIMESTAMP = $(PERLRUN) "-MExtUtils::Command" -e eqtime
+ECHO = echo
+ECHO_N = echo -n
+UNINST = 0
+VERBINST = 0
+MOD_INSTALL = $(PERLRUN) -MExtUtils::Install -e 'install({@ARGV}, '\''$(VERBINST)'\'', 0, '\''$(UNINST)'\'');'
+DOC_INSTALL = $(PERLRUN) "-MExtUtils::Command::MM" -e perllocal_install
+UNINSTALL = $(PERLRUN) "-MExtUtils::Command::MM" -e uninstall
+WARN_IF_OLD_PACKLIST = $(PERLRUN) "-MExtUtils::Command::MM" -e warn_if_old_packlist
+
+
+# --- MakeMaker makemakerdflt section:
+makemakerdflt: all
+ $(NOECHO) $(NOOP)
+
+
+# --- MakeMaker dist section:
+TAR = tar
+TARFLAGS = cvf
+ZIP = zip
+ZIPFLAGS = -r
+COMPRESS = gzip --best
+SUFFIX = .gz
+SHAR = shar
+PREOP = $(PERL) -I. -MModule::Install::Admin -e "dist_preop(q($(DISTVNAME)))"
+POSTOP = $(NOECHO) $(NOOP)
+TO_UNIX = $(NOECHO) $(NOOP)
+CI = ci -u
+RCS_LABEL = rcs -Nv$(VERSION_SYM): -q
+DIST_CP = best
+DIST_DEFAULT = tardist
+DISTNAME = Sub-Install
+DISTVNAME = Sub-Install-0.03
+
+
+# --- MakeMaker macro section:
+
+
+# --- MakeMaker depend section:
+
+
+# --- MakeMaker cflags section:
+
+
+# --- MakeMaker const_loadlibs section:
+
+
+# --- MakeMaker const_cccmd section:
+
+
+# --- MakeMaker post_constants section:
+
+
+# --- MakeMaker pasthru section:
+
+PASTHRU = LIB="$(LIB)"\
+ LIBPERL_A="$(LIBPERL_A)"\
+ LINKTYPE="$(LINKTYPE)"\
+ PREFIX="$(PREFIX)"\
+ OPTIMIZE="$(OPTIMIZE)"\
+ PASTHRU_DEFINE="$(PASTHRU_DEFINE)"\
+ PASTHRU_INC="$(PASTHRU_INC)"
+
+
+# --- MakeMaker special_targets section:
+.SUFFIXES: .xs .c .C .cpp .i .s .cxx .cc $(OBJ_EXT)
+
+.PHONY: all config static dynamic test linkext manifest
+
+
+
+# --- MakeMaker c_o section:
+
+
+# --- MakeMaker xs_c section:
+
+
+# --- MakeMaker xs_o section:
+
+
+# --- MakeMaker top_targets section:
+all :: pure_all manifypods
+ $(NOECHO) $(NOOP)
+
+
+pure_all :: config pm_to_blib subdirs linkext
+ $(NOECHO) $(NOOP)
+
+subdirs :: $(MYEXTLIB)
+ $(NOECHO) $(NOOP)
+
+config :: $(FIRST_MAKEFILE) $(INST_LIBDIR)$(DIRFILESEP).exists
+ $(NOECHO) $(NOOP)
+
+config :: $(INST_ARCHAUTODIR)$(DIRFILESEP).exists
+ $(NOECHO) $(NOOP)
+
+config :: $(INST_AUTODIR)$(DIRFILESEP).exists
+ $(NOECHO) $(NOOP)
+
+$(INST_AUTODIR)/.exists :: /usr/local/lib/perl5/5.8.7/darwin-2level/CORE/perl.h
+ $(NOECHO) $(MKPATH) $(INST_AUTODIR)
+ $(NOECHO) $(EQUALIZE_TIMESTAMP) /usr/local/lib/perl5/5.8.7/darwin-2level/CORE/perl.h $(INST_AUTODIR)/.exists
+
+ -$(NOECHO) $(CHMOD) $(PERM_RWX) $(INST_AUTODIR)
+
+$(INST_LIBDIR)/.exists :: /usr/local/lib/perl5/5.8.7/darwin-2level/CORE/perl.h
+ $(NOECHO) $(MKPATH) $(INST_LIBDIR)
+ $(NOECHO) $(EQUALIZE_TIMESTAMP) /usr/local/lib/perl5/5.8.7/darwin-2level/CORE/perl.h $(INST_LIBDIR)/.exists
+
+ -$(NOECHO) $(CHMOD) $(PERM_RWX) $(INST_LIBDIR)
+
+$(INST_ARCHAUTODIR)/.exists :: /usr/local/lib/perl5/5.8.7/darwin-2level/CORE/perl.h
+ $(NOECHO) $(MKPATH) $(INST_ARCHAUTODIR)
+ $(NOECHO) $(EQUALIZE_TIMESTAMP) /usr/local/lib/perl5/5.8.7/darwin-2level/CORE/perl.h $(INST_ARCHAUTODIR)/.exists
+
+ -$(NOECHO) $(CHMOD) $(PERM_RWX) $(INST_ARCHAUTODIR)
+
+config :: $(INST_MAN3DIR)$(DIRFILESEP).exists
+ $(NOECHO) $(NOOP)
+
+
+$(INST_MAN3DIR)/.exists :: /usr/local/lib/perl5/5.8.7/darwin-2level/CORE/perl.h
+ $(NOECHO) $(MKPATH) $(INST_MAN3DIR)
+ $(NOECHO) $(EQUALIZE_TIMESTAMP) /usr/local/lib/perl5/5.8.7/darwin-2level/CORE/perl.h $(INST_MAN3DIR)/.exists
+
+ -$(NOECHO) $(CHMOD) $(PERM_RWX) $(INST_MAN3DIR)
+
+help:
+ perldoc ExtUtils::MakeMaker
+
+
+# --- MakeMaker linkext section:
+
+linkext :: $(LINKTYPE)
+ $(NOECHO) $(NOOP)
+
+
+# --- MakeMaker dlsyms section:
+
+
+# --- MakeMaker dynamic section:
+
+dynamic :: $(FIRST_MAKEFILE) $(INST_DYNAMIC) $(INST_BOOT)
+ $(NOECHO) $(NOOP)
+
+
+# --- MakeMaker dynamic_bs section:
+
+BOOTSTRAP =
+
+
+# --- MakeMaker dynamic_lib section:
+
+
+# --- MakeMaker static section:
+
+## $(INST_PM) has been moved to the all: target.
+## It remains here for awhile to allow for old usage: "make static"
+static :: $(FIRST_MAKEFILE) $(INST_STATIC)
+ $(NOECHO) $(NOOP)
+
+
+# --- MakeMaker static_lib section:
+
+
+# --- MakeMaker manifypods section:
+
+POD2MAN_EXE = $(PERLRUN) "-MExtUtils::Command::MM" -e pod2man "--"
+POD2MAN = $(POD2MAN_EXE)
+
+
+manifypods : pure_all \
+ lib/Sub/Install.pm \
+ lib/Sub/Install.pm
+ $(NOECHO) $(POD2MAN) --section=3 --perm_rw=$(PERM_RW)\
+ lib/Sub/Install.pm $(INST_MAN3DIR)/Sub::Install.$(MAN3EXT)
+
+
+
+
+# --- MakeMaker processPL section:
+
+
+# --- MakeMaker installbin section:
+
+
+# --- MakeMaker subdirs section:
+
+# none
+
+# --- MakeMaker clean_subdirs section:
+clean_subdirs :
+ $(NOECHO) $(NOOP)
+
+
+# --- MakeMaker clean section:
+
+# Delete temporary files but do not touch installed files. We don't delete
+# the Makefile here so a later make realclean still has a makefile to use.
+
+clean :: clean_subdirs
+ -$(RM_RF) Sub-Install-* cover_db ./blib $(MAKE_APERL_FILE) $(INST_ARCHAUTODIR)/extralibs.all $(INST_ARCHAUTODIR)/extralibs.ld perlmain.c tmon.out mon.out so_locations pm_to_blib *$(OBJ_EXT) *$(LIB_EXT) perl.exe perl perl$(EXE_EXT) $(BOOTSTRAP) $(BASEEXT).bso $(BASEEXT).def lib$(BASEEXT).def $(BASEEXT).exp $(BASEEXT).x core core.*perl.*.? *perl.core core.[0-9] core.[0-9][0-9] core.[0-9][0-9][0-9] core.[0-9][0-9][0-9][0-9] core.[0-9][0-9][0-9][0-9][0-9]
+ -$(MV) $(FIRST_MAKEFILE) $(MAKEFILE_OLD) $(DEV_NULL)
+
+
+# --- MakeMaker realclean_subdirs section:
+realclean_subdirs :
+ $(NOECHO) $(NOOP)
+
+
+# --- MakeMaker realclean section:
+
+# Delete temporary files (via clean) and also delete installed files
+realclean purge :: clean realclean_subdirs
+ $(RM_RF) $(INST_AUTODIR) $(INST_ARCHAUTODIR)
+ $(RM_RF) $(DISTVNAME)
+ $(RM_F) blib/lib/Sub/Install.pm $(MAKEFILE_OLD) $(FIRST_MAKEFILE)
+
+
+# --- MakeMaker metafile section:
+metafile:
+ $(NOECHO) $(NOOP)
+
+
+# --- MakeMaker metafile_addtomanifest section:
+metafile_addtomanifest:
+ $(NOECHO) $(NOOP)
+
+
+# --- MakeMaker dist_basics section:
+distclean :: realclean distcheck
+ $(NOECHO) $(NOOP)
+
+distcheck :
+ $(PERLRUN) "-MExtUtils::Manifest=fullcheck" -e fullcheck
+
+skipcheck :
+ $(PERLRUN) "-MExtUtils::Manifest=skipcheck" -e skipcheck
+
+manifest :
+ $(PERLRUN) "-MExtUtils::Manifest=mkmanifest" -e mkmanifest
+
+veryclean : realclean
+ $(RM_F) *~ *.orig */*~ */*.orig
+
+
+
+# --- MakeMaker dist_core section:
+
+dist : $(DIST_DEFAULT) $(FIRST_MAKEFILE)
+ $(NOECHO) $(PERLRUN) -l -e 'print '\''Warning: Makefile possibly out of date with $(VERSION_FROM)'\''' \
+ -e ' if -e '\''$(VERSION_FROM)'\'' and -M '\''$(VERSION_FROM)'\'' < -M '\''$(FIRST_MAKEFILE)'\'';'
+
+tardist : $(DISTVNAME).tar$(SUFFIX)
+ $(NOECHO) $(NOOP)
+
+uutardist : $(DISTVNAME).tar$(SUFFIX)
+ uuencode $(DISTVNAME).tar$(SUFFIX) $(DISTVNAME).tar$(SUFFIX) > $(DISTVNAME).tar$(SUFFIX)_uu
+
+$(DISTVNAME).tar$(SUFFIX) : distdir
+ $(PREOP)
+ $(TO_UNIX)
+ $(TAR) $(TARFLAGS) $(DISTVNAME).tar $(DISTVNAME)
+ $(RM_RF) $(DISTVNAME)
+ $(COMPRESS) $(DISTVNAME).tar
+ $(POSTOP)
+
+zipdist : $(DISTVNAME).zip
+ $(NOECHO) $(NOOP)
+
+$(DISTVNAME).zip : distdir
+ $(PREOP)
+ $(ZIP) $(ZIPFLAGS) $(DISTVNAME).zip $(DISTVNAME)
+ $(RM_RF) $(DISTVNAME)
+ $(POSTOP)
+
+shdist : distdir
+ $(PREOP)
+ $(SHAR) $(DISTVNAME) > $(DISTVNAME).shar
+ $(RM_RF) $(DISTVNAME)
+ $(POSTOP)
+
+
+# --- MakeMaker distdir section:
+distdir : metafile metafile_addtomanifest
+ $(RM_RF) $(DISTVNAME)
+ $(PERLRUN) "-MExtUtils::Manifest=manicopy,maniread" \
+ -e "manicopy(maniread(),'$(DISTVNAME)', '$(DIST_CP)');"
+
+
+
+# --- MakeMaker dist_test section:
+
+disttest : distdir
+ cd $(DISTVNAME) && $(ABSPERLRUN) Makefile.PL
+ cd $(DISTVNAME) && $(MAKE) $(PASTHRU)
+ cd $(DISTVNAME) && $(MAKE) test $(PASTHRU)
+
+
+# --- MakeMaker dist_ci section:
+
+ci :
+ $(PERLRUN) "-MExtUtils::Manifest=maniread" \
+ -e "@all = keys %{ maniread() };" \
+ -e "print(qq{Executing $(CI) @all\n}); system(qq{$(CI) @all});" \
+ -e "print(qq{Executing $(RCS_LABEL) ...\n}); system(qq{$(RCS_LABEL) @all});"
+
+
+# --- MakeMaker install section:
+
+install :: all pure_install doc_install
+
+install_perl :: all pure_perl_install doc_perl_install
+
+install_site :: all pure_site_install doc_site_install
+
+install_vendor :: all pure_vendor_install doc_vendor_install
+
+pure_install :: pure_$(INSTALLDIRS)_install
+
+doc_install :: doc_$(INSTALLDIRS)_install
+
+pure__install : pure_site_install
+ $(NOECHO) $(ECHO) INSTALLDIRS not defined, defaulting to INSTALLDIRS=site
+
+doc__install : doc_site_install
+ $(NOECHO) $(ECHO) INSTALLDIRS not defined, defaulting to INSTALLDIRS=site
+
+pure_perl_install ::
+ $(NOECHO) $(MOD_INSTALL) \
+ read $(PERL_ARCHLIB)/auto/$(FULLEXT)/.packlist \
+ write $(DESTINSTALLARCHLIB)/auto/$(FULLEXT)/.packlist \
+ $(INST_LIB) $(DESTINSTALLPRIVLIB) \
+ $(INST_ARCHLIB) $(DESTINSTALLARCHLIB) \
+ $(INST_BIN) $(DESTINSTALLBIN) \
+ $(INST_SCRIPT) $(DESTINSTALLSCRIPT) \
+ $(INST_MAN1DIR) $(DESTINSTALLMAN1DIR) \
+ $(INST_MAN3DIR) $(DESTINSTALLMAN3DIR)
+ $(NOECHO) $(WARN_IF_OLD_PACKLIST) \
+ $(SITEARCHEXP)/auto/$(FULLEXT)
+
+
+pure_site_install ::
+ $(NOECHO) $(MOD_INSTALL) \
+ read $(SITEARCHEXP)/auto/$(FULLEXT)/.packlist \
+ write $(DESTINSTALLSITEARCH)/auto/$(FULLEXT)/.packlist \
+ $(INST_LIB) $(DESTINSTALLSITELIB) \
+ $(INST_ARCHLIB) $(DESTINSTALLSITEARCH) \
+ $(INST_BIN) $(DESTINSTALLSITEBIN) \
+ $(INST_SCRIPT) $(DESTINSTALLSCRIPT) \
+ $(INST_MAN1DIR) $(DESTINSTALLSITEMAN1DIR) \
+ $(INST_MAN3DIR) $(DESTINSTALLSITEMAN3DIR)
+ $(NOECHO) $(WARN_IF_OLD_PACKLIST) \
+ $(PERL_ARCHLIB)/auto/$(FULLEXT)
+
+pure_vendor_install ::
+ $(NOECHO) $(MOD_INSTALL) \
+ read $(VENDORARCHEXP)/auto/$(FULLEXT)/.packlist \
+ write $(DESTINSTALLVENDORARCH)/auto/$(FULLEXT)/.packlist \
+ $(INST_LIB) $(DESTINSTALLVENDORLIB) \
+ $(INST_ARCHLIB) $(DESTINSTALLVENDORARCH) \
+ $(INST_BIN) $(DESTINSTALLVENDORBIN) \
+ $(INST_SCRIPT) $(DESTINSTALLSCRIPT) \
+ $(INST_MAN1DIR) $(DESTINSTALLVENDORMAN1DIR) \
+ $(INST_MAN3DIR) $(DESTINSTALLVENDORMAN3DIR)
+
+doc_perl_install ::
+ $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod
+ -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB)
+ -$(NOECHO) $(DOC_INSTALL) \
+ "Module" "$(NAME)" \
+ "installed into" "$(INSTALLPRIVLIB)" \
+ LINKTYPE "$(LINKTYPE)" \
+ VERSION "$(VERSION)" \
+ EXE_FILES "$(EXE_FILES)" \
+ >> $(DESTINSTALLARCHLIB)/perllocal.pod
+
+doc_site_install ::
+ $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod
+ -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB)
+ -$(NOECHO) $(DOC_INSTALL) \
+ "Module" "$(NAME)" \
+ "installed into" "$(INSTALLSITELIB)" \
+ LINKTYPE "$(LINKTYPE)" \
+ VERSION "$(VERSION)" \
+ EXE_FILES "$(EXE_FILES)" \
+ >> $(DESTINSTALLARCHLIB)/perllocal.pod
+
+doc_vendor_install ::
+ $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod
+ -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB)
+ -$(NOECHO) $(DOC_INSTALL) \
+ "Module" "$(NAME)" \
+ "installed into" "$(INSTALLVENDORLIB)" \
+ LINKTYPE "$(LINKTYPE)" \
+ VERSION "$(VERSION)" \
+ EXE_FILES "$(EXE_FILES)" \
+ >> $(DESTINSTALLARCHLIB)/perllocal.pod
+
+
+uninstall :: uninstall_from_$(INSTALLDIRS)dirs
+
+uninstall_from_perldirs ::
+ $(NOECHO) $(UNINSTALL) $(PERL_ARCHLIB)/auto/$(FULLEXT)/.packlist
+
+uninstall_from_sitedirs ::
+ $(NOECHO) $(UNINSTALL) $(SITEARCHEXP)/auto/$(FULLEXT)/.packlist
+
+uninstall_from_vendordirs ::
+ $(NOECHO) $(UNINSTALL) $(VENDORARCHEXP)/auto/$(FULLEXT)/.packlist
+
+
+# --- MakeMaker force section:
+# Phony target to force checking subdirectories.
+FORCE:
+ $(NOECHO) $(NOOP)
+
+
+# --- MakeMaker perldepend section:
+
+
+# --- MakeMaker makefile section:
+
+# We take a very conservative approach here, but it's worth it.
+# We move Makefile to Makefile.old here to avoid gnu make looping.
+$(FIRST_MAKEFILE) : Makefile.PL $(CONFIGDEP)
+ $(NOECHO) $(ECHO) "Makefile out-of-date with respect to $?"
+ $(NOECHO) $(ECHO) "Cleaning current config before rebuilding Makefile..."
+ $(NOECHO) $(RM_F) $(MAKEFILE_OLD)
+ $(NOECHO) $(MV) $(FIRST_MAKEFILE) $(MAKEFILE_OLD)
+ -$(MAKE) -f $(MAKEFILE_OLD) clean $(DEV_NULL) || $(NOOP)
+ $(PERLRUN) Makefile.PL
+ $(NOECHO) $(ECHO) "==> Your Makefile has been rebuilt. <=="
+ $(NOECHO) $(ECHO) "==> Please rerun the make command. <=="
+ false
+
+
+
+# --- MakeMaker staticmake section:
+
+# --- MakeMaker makeaperl section ---
+MAP_TARGET = perl
+FULLPERL = /usr/local/bin/perl
+
+$(MAP_TARGET) :: static $(MAKE_APERL_FILE)
+ $(MAKE) -f $(MAKE_APERL_FILE) $@
+
+$(MAKE_APERL_FILE) : $(FIRST_MAKEFILE)
+ $(NOECHO) $(ECHO) Writing \"$(MAKE_APERL_FILE)\" for this $(MAP_TARGET)
+ $(NOECHO) $(PERLRUNINST) \
+ Makefile.PL DIR= \
+ MAKEFILE=$(MAKE_APERL_FILE) LINKTYPE=static \
+ MAKEAPERL=1 NORECURS=1 CCCDLFLAGS=
+
+
+# --- MakeMaker test section:
+
+TEST_VERBOSE=0
+TEST_TYPE=test_$(LINKTYPE)
+TEST_FILE = test.pl
+TEST_FILES = t/*.t
+TESTDB_SW = -d
+
+testdb :: testdb_$(LINKTYPE)
+
+test :: $(TEST_TYPE)
+
+test_dynamic :: pure_all
+ PERL_DL_NONLAZY=1 $(FULLPERLRUN) "-MExtUtils::Command::MM" "-e" "test_harness($(TEST_VERBOSE), 'inc', '$(INST_LIB)', '$(INST_ARCHLIB)')" $(TEST_FILES)
+
+testdb_dynamic :: pure_all
+ PERL_DL_NONLAZY=1 $(FULLPERLRUN) $(TESTDB_SW) "-Iinc" "-I$(INST_LIB)" "-I$(INST_ARCHLIB)" $(TEST_FILE)
+
+test_ : test_dynamic
+
+test_static :: test_dynamic
+testdb_static :: testdb_dynamic
+
+
+# --- MakeMaker ppd section:
+# Creates a PPD (Perl Package Description) for a binary distribution.
+ppd:
+ $(NOECHO) $(ECHO) '<SOFTPKG NAME="$(DISTNAME)" VERSION="0,03,0,0">' > $(DISTNAME).ppd
+ $(NOECHO) $(ECHO) ' <TITLE>$(DISTNAME)</TITLE>' >> $(DISTNAME).ppd
+ $(NOECHO) $(ECHO) ' <ABSTRACT>install subroutines into packages easily</ABSTRACT>' >> $(DISTNAME).ppd
+ $(NOECHO) $(ECHO) ' <AUTHOR>Ricardo Signes &lt;rjbs@cpan.org&gt;</AUTHOR>' >> $(DISTNAME).ppd
+ $(NOECHO) $(ECHO) ' <IMPLEMENTATION>' >> $(DISTNAME).ppd
+ $(NOECHO) $(ECHO) ' <DEPENDENCY NAME="Test-More" VERSION="0,0,0,0" />' >> $(DISTNAME).ppd
+ $(NOECHO) $(ECHO) ' <OS NAME="$(OSNAME)" />' >> $(DISTNAME).ppd
+ $(NOECHO) $(ECHO) ' <ARCHITECTURE NAME="darwin-2level" />' >> $(DISTNAME).ppd
+ $(NOECHO) $(ECHO) ' <CODEBASE HREF="" />' >> $(DISTNAME).ppd
+ $(NOECHO) $(ECHO) ' </IMPLEMENTATION>' >> $(DISTNAME).ppd
+ $(NOECHO) $(ECHO) '</SOFTPKG>' >> $(DISTNAME).ppd
+
+
+# --- MakeMaker pm_to_blib section:
+
+pm_to_blib: $(TO_INST_PM)
+ $(NOECHO) $(PERLRUN) -MExtUtils::Install -e 'pm_to_blib({@ARGV}, '\''$(INST_LIB)/auto'\'', '\''$(PM_FILTER)'\'')'\
+ lib/Sub/Install.pm blib/lib/Sub/Install.pm
+ $(NOECHO) $(TOUCH) $@
+
+# --- MakeMaker selfdocument section:
+
+
+# --- MakeMaker postamble section:
+
+
+# End.
+# Postamble by Module::Install 0.39
+# --- Module::Install::Admin::Makefile section:
+
+realclean purge ::
+ $(RM_F) $(DISTVNAME).tar$(SUFFIX)
+ $(RM_RF) inc MANIFEST.bak _build
+ $(PERL) -I. -MModule::Install::Admin -e "remove_meta()"
+
+reset :: purge
+
+upload :: test dist
+ cpan-upload -verbose $(DISTVNAME).tar$(SUFFIX)
+
+grok ::
+ perldoc Module::Install
+
+distsign ::
+ cpansign -s
+
16 Makefile.PL
@@ -0,0 +1,16 @@
+use strict;
+use warnings;
+use ExtUtils::MakeMaker;
+
+WriteMakefile(
+ NAME => 'Sub::Install',
+ AUTHOR => 'Ricardo Signes <rjbs@cpan.org>',
+ VERSION_FROM => 'lib/Sub/Install.pm',
+ ABSTRACT_FROM => 'lib/Sub/Install.pm',
+ PL_FILES => {},
+ PREREQ_PM => {
+ 'Test::More' => 0,
+ },
+ dist => { COMPRESS => 'gzip -9f', SUFFIX => 'gz', },
+ clean => { FILES => 'Sub-Install-* cover_db' },
+);
6 README
@@ -0,0 +1,6 @@
+Sub-Install
+
+This module provides a simple routine for installing code into packages without
+looking at typeglobs or thinking about warnings or strictures.
+
+It also doesn't muddy up UNIVERSAL.
BIN Sub-Install-0.03.tar.gz
Binary file not shown.
0 blib/arch/auto/Sub/Install/.exists
No changes.
0 blib/lib/Sub/.exists
No changes.
258 blib/lib/Sub/Install.pm
@@ -0,0 +1,258 @@
+package Sub::Install;
+
+use warnings;
+use strict;
+
+use Carp qw(croak);
+
+=head1 NAME
+
+Sub::Install - install subroutines into packages easily
+
+=head1 VERSION
+
+version 0.03
+
+ $Id: /my/rjbs/subinst/trunk/lib/Sub/Install.pm 16622 2005-11-23T00:17:55.304991Z rjbs $
+
+=cut
+
+our $VERSION = '0.03';
+
+=head1 SYNOPSIS
+
+ use Sub::Install;
+
+ Sub::Install::install_sub({
+ code => sub { ... },
+ into => $package,
+ as => $subname
+ });
+
+=head1 DESCRIPTION
+
+This module makes it easy to install subroutines into packages without the
+unslightly mess of C<no strict> or typeglobs lying about where just anyone can
+see them.
+
+=head1 FUNCTIONS
+
+=head2 C< install_sub >
+
+ Sub::Install::install_sub({
+ code => \&subroutine,
+ into => "Finance::Shady",
+ as => 'launder',
+ });
+
+This routine installs a given code reference into a package as a normal
+subroutine. The above is equivalent to:
+
+ no strict 'refs';
+ *{"Finance::Shady" . '::' . "launder"} = \&subroutine;
+
+If C<into> is not given, the sub is installed into the calling package.
+
+If C<code> is not a code reference, it is looked for as an existing sub in the
+package named in the C<from> parameter. If C<from> is not given, it will look
+in the calling package.
+
+If C<as> is not given, and if C<code> is a name, C<as> will default to C<code>.
+If C<as> is not given, but if C<code> is a code ref, Sub::Install will try to
+find the name of the given code ref and use that as C<as>.
+
+That means that this code:
+
+ Sub::Install::install_sub({
+ code => 'twitch',
+ from => 'Person::InPain',
+ into => 'Person::Teenager',
+ as => 'dance',
+ });
+
+is the same as:
+
+ package Person::Teenager;
+
+ Sub::Install::install_sub({
+ code => Person::InPain->can('twitch'),
+ as => 'dance',
+ });
+
+=cut
+
+sub install_sub {
+ _process_arg_and_install($_[0], \&_install);
+}
+
+=head2 C< reinstall_sub >
+
+This routine behaves exactly like C<L</install_sub>>, but does not emit a
+warning if warnings are on and the destination is already defined.
+
+=cut
+
+sub reinstall_sub {
+ _process_arg_and_install($_[0], \&_reinstall);
+}
+
+# do the heavy lifting
+sub _process_arg_and_install {
+ my ($arg, $installer) = @_;
+
+ # We're "guaranteed" to be called by one layer of indirection.
+ my ($calling_pkg) = caller(1);
+
+ # I'd rather use ||= but I'm whoring for Devel::Cover.
+ $arg->{into} = $calling_pkg unless $arg->{into};
+ $arg->{from} = $calling_pkg unless $arg->{from};
+
+ # This is the only absolutely required argument, in many cases.
+ croak "named argument 'code' is not optional" unless $arg->{code};
+
+ if (ref $arg->{code} eq 'CODE') {
+ # try to generate target name by looking up source's name
+ unless ($arg->{as}) {
+ require B;
+ my $name = B::svref_2object($arg->{code})->GV->NAME;
+ $arg->{as} = $name unless $name =~ /\A__ANON__/;
+ }
+ } else {
+ my $code = $arg->{from}->can($arg->{code});
+
+ croak "couldn't find subroutine named $arg->{code} in package $arg->{from}"
+ unless $code;
+
+ $arg->{as} = $arg->{code} unless $arg->{as};
+ $arg->{code} = $code;
+ }
+
+ croak "couldn't determine name under which to install subroutine"
+ unless $arg->{as};
+
+ $installer->($arg->{code} => $arg->{into} . '::' . $arg->{as});
+
+ return $arg->{code};
+}
+
+# do the ugly work
+sub _install {
+ my ($code, $fullname) = @_;
+ no strict 'refs';
+ *$fullname = $code;
+}
+
+sub _reinstall {
+ my ($code, $fullname) = @_;
+ no strict 'refs';
+ no warnings;
+ *$fullname = $code;
+}
+
+=head2 C< install_installers >
+
+This routine is provided to allow Sub::Install compatibility with
+Sub::Installer. It installs C<install_sub> and C<reinstall_sub> methods on the
+package in its C<into> argument.
+
+ Sub::Install::install_installers('Code::Builder'); # just for us, please
+ Code::Builder->install_sub({ name => $code_ref });
+
+ Sub::Install::install_installers('UNIVERSAL'); # feeling lucky, punk?
+ Anything::At::All->install_sub({ moniker => $sub_ref });
+
+The installed installers are similar, but not identical, to those provided by
+Sub::Installer. They accept a single hash as an argument. The key/value pairs
+are used as the C<as> and C<code> parameters to the C<install_sub> routine
+detailed above. The package name on which the method is called is used as the
+C<into> parameter.
+
+Unlike Sub::Installer's C<install_sub> will not eval strings into code, but
+will look for named code in the calling package.
+
+=cut
+
+sub install_installers {
+ my ($arg) = @_;
+
+ # set up default target here
+ ($arg->{into}) = caller(0) unless $arg->{into};
+
+ my @methods = qw(install_sub reinstall_sub);
+
+ for my $method (@methods) {
+ my $code = sub {
+ my ($package, $subs) = @_;
+ my ($caller) = caller(0);
+ my $return;
+ for (my ($name, $sub) = %$subs) {
+ $return = Sub::Install->can($method)->({
+ code => $sub,
+ from => $caller,
+ into => $package,
+ as => $name
+ });
+ }
+ return $return;
+ };
+ install_sub({ code => $code, into => $arg->{into}, as => $method });
+ }
+}
+
+
+=head1 EXPORTS
+
+Sub::Install exports C<install_sub> and C<reinstall_sub> only if they are
+requested.
+
+=cut
+
+sub import {
+ my $class = shift;
+ my %import = map { $_ => 1 } @_;
+ my ($target) = caller(0);
+
+ # eating my own dogfood
+ for (qw(install_sub reinstall_sub)) {
+ install_sub({ code => $_, into => $target }) if ($import{$_});
+ }
+}
+
+=head1 SEE ALSO
+
+=over
+
+=item L<Sub::Installer>
+
+This module is (obviously) a reaction to Damian Conway's Sub::Installer, which
+does the same thing, but does it by getting its greasy fingers all over
+UNIVERSAL. I was really happy about the idea of making the installation of
+coderefs less ugly, but I couldn't bring myself to replace the ugliness of
+typeglobs and loosened strictures with the ugliness of UNIVERSAL methods.
+
+=back
+
+=head1 AUTHOR
+
+Ricardo Signes, C<< <rjbs@cpan.org> >>
+
+Several of the tests are adapted from tests that shipped with Damian Conway's
+Sub-Installer distribution.
+
+=head1 BUGS
+
+Please report any bugs or feature requests to C<bug-sub-install@rt.cpan.org>,
+or through the web interface at L<http://rt.cpan.org>. I will be notified, and
+then you'll automatically be notified of progress on your bug as I make
+changes.
+
+=head1 COPYRIGHT
+
+Copyright 2005 Ricardo Signes, All Rights Reserved.
+
+This program is free software; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+
+=cut
+
+1;
0 blib/lib/auto/Sub/Install/.exists
No changes.
0 blib/man3/.exists
No changes.
274 blib/man3/Sub::Install.3
@@ -0,0 +1,274 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.3
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings. \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote. | will give a
+.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to
+.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C'
+.\" expand to `' in nroff, nothing in troff, for use with C<>.
+.tr \(*W-|\(bv\*(Tr
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+. ds -- \(*W-
+. ds PI pi
+. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
+. ds L" ""
+. ds R" ""
+. ds C` ""
+. ds C' ""
+'br\}
+.el\{\
+. ds -- \|\(em\|
+. ds PI \(*p
+. ds L" ``
+. ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD. Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
+..
+. nr % 0
+. rr F
+.\}
+.\"
+.\" For nroff, turn off justification. Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear. Run. Save yourself. No user-serviceable parts.
+. \" fudge factors for nroff and troff
+.if n \{\
+. ds #H 0
+. ds #V .8m
+. ds #F .3m
+. ds #[ \f1
+. ds #] \fP
+.\}
+.if t \{\
+. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+. ds #V .6m
+. ds #F 0
+. ds #[ \&
+. ds #] \&
+.\}
+. \" simple accents for nroff and troff
+.if n \{\
+. ds ' \&
+. ds ` \&
+. ds ^ \&
+. ds , \&
+. ds ~ ~
+. ds /
+.\}
+.if t \{\
+. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+. \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+. \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+. \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+. ds : e
+. ds 8 ss
+. ds o a
+. ds d- d\h'-1'\(ga
+. ds D- D\h'-1'\(hy
+. ds th \o'bp'
+. ds Th \o'LP'
+. ds ae ae
+. ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "Sub::Install 3"
+.TH Sub::Install 3 "2005-11-22" "perl v5.8.7" "User Contributed Perl Documentation"
+.SH "NAME"
+Sub::Install \- install subroutines into packages easily
+.SH "VERSION"
+.IX Header "VERSION"
+version 0.03
+.PP
+.Vb 1
+\& $Id: /my/rjbs/subinst/trunk/lib/Sub/Install.pm 16622 2005-11-23T00:17:55.304991Z rjbs $
+.Ve
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+.Vb 1
+\& use Sub::Install;
+.Ve
+.PP
+.Vb 5
+\& Sub::Install::install_sub({
+\& code => sub { ... },
+\& into => $package,
+\& as => $subname
+\& });
+.Ve
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+This module makes it easy to install subroutines into packages without the
+unslightly mess of \f(CW\*(C`no strict\*(C'\fR or typeglobs lying about where just anyone can
+see them.
+.SH "FUNCTIONS"
+.IX Header "FUNCTIONS"
+.ie n .Sh """ install_sub """
+.el .Sh "\f(CW install_sub \fP"
+.IX Subsection " install_sub "
+.Vb 5
+\& Sub::Install::install_sub({
+\& code => \e&subroutine,
+\& into => "Finance::Shady",
+\& as => 'launder',
+\& });
+.Ve
+.PP
+This routine installs a given code reference into a package as a normal
+subroutine. The above is equivalent to:
+.PP
+.Vb 2
+\& no strict 'refs';
+\& *{"Finance::Shady" . '::' . "launder"} = \e&subroutine;
+.Ve
+.PP
+If \f(CW\*(C`into\*(C'\fR is not given, the sub is installed into the calling package.
+.PP
+If \f(CW\*(C`code\*(C'\fR is not a code reference, it is looked for as an existing sub in the
+package named in the \f(CW\*(C`from\*(C'\fR parameter. If \f(CW\*(C`from\*(C'\fR is not given, it will look
+in the calling package.
+.PP
+If \f(CW\*(C`as\*(C'\fR is not given, and if \f(CW\*(C`code\*(C'\fR is a name, \f(CW\*(C`as\*(C'\fR will default to \f(CW\*(C`code\*(C'\fR.
+If \f(CW\*(C`as\*(C'\fR is not given, but if \f(CW\*(C`code\*(C'\fR is a code ref, Sub::Install will try to
+find the name of the given code ref and use that as \f(CW\*(C`as\*(C'\fR.
+.PP
+That means that this code:
+.PP
+.Vb 6
+\& Sub::Install::install_sub({
+\& code => 'twitch',
+\& from => 'Person::InPain',
+\& into => 'Person::Teenager',
+\& as => 'dance',
+\& });
+.Ve
+.PP
+is the same as:
+.PP
+.Vb 1
+\& package Person::Teenager;
+.Ve
+.PP
+.Vb 4
+\& Sub::Install::install_sub({
+\& code => Person::InPain->can('twitch'),
+\& as => 'dance',
+\& });
+.Ve
+.ie n .Sh """ reinstall_sub """
+.el .Sh "\f(CW reinstall_sub \fP"
+.IX Subsection " reinstall_sub "
+This routine behaves exactly like \f(CW\*(C`\*(L"install_sub\*(R"\*(C'\fR, but does not emit a
+warning if warnings are on and the destination is already defined.
+.ie n .Sh """ install_installers """
+.el .Sh "\f(CW install_installers \fP"
+.IX Subsection " install_installers "
+This routine is provided to allow Sub::Install compatibility with
+Sub::Installer. It installs \f(CW\*(C`install_sub\*(C'\fR and \f(CW\*(C`reinstall_sub\*(C'\fR methods on the
+package in its \f(CW\*(C`into\*(C'\fR argument.
+.PP
+.Vb 2
+\& Sub::Install::install_installers('Code::Builder'); # just for us, please
+\& Code::Builder->install_sub({ name => $code_ref });
+.Ve
+.PP
+.Vb 2
+\& Sub::Install::install_installers('UNIVERSAL'); # feeling lucky, punk?
+\& Anything::At::All->install_sub({ moniker => $sub_ref });
+.Ve
+.PP
+The installed installers are similar, but not identical, to those provided by
+Sub::Installer. They accept a single hash as an argument. The key/value pairs
+are used as the \f(CW\*(C`as\*(C'\fR and \f(CW\*(C`code\*(C'\fR parameters to the \f(CW\*(C`install_sub\*(C'\fR routine
+detailed above. The package name on which the method is called is used as the
+\&\f(CW\*(C`into\*(C'\fR parameter.
+.PP
+Unlike Sub::Installer's \f(CW\*(C`install_sub\*(C'\fR will not eval strings into code, but
+will look for named code in the calling package.
+.SH "EXPORTS"
+.IX Header "EXPORTS"
+Sub::Install exports \f(CW\*(C`install_sub\*(C'\fR and \f(CW\*(C`reinstall_sub\*(C'\fR only if they are
+requested.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+.IP "Sub::Installer" 4
+.IX Item "Sub::Installer"
+This module is (obviously) a reaction to Damian Conway's Sub::Installer, which
+does the same thing, but does it by getting its greasy fingers all over
+\&\s-1UNIVERSAL\s0. I was really happy about the idea of making the installation of
+coderefs less ugly, but I couldn't bring myself to replace the ugliness of
+typeglobs and loosened strictures with the ugliness of \s-1UNIVERSAL\s0 methods.
+.SH "AUTHOR"
+.IX Header "AUTHOR"
+Ricardo Signes, \f(CW\*(C`<rjbs@cpan.org>\*(C'\fR
+.PP
+Several of the tests are adapted from tests that shipped with Damian Conway's
+Sub-Installer distribution.
+.SH "BUGS"
+.IX Header "BUGS"
+Please report any bugs or feature requests to \f(CW\*(C`bug\-sub\-install@rt.cpan.org\*(C'\fR,
+or through the web interface at <http://rt.cpan.org>. I will be notified, and
+then you'll automatically be notified of progress on your bug as I make
+changes.
+.SH "COPYRIGHT"
+.IX Header "COPYRIGHT"
+Copyright 2005 Ricardo Signes, All Rights Reserved.
+.PP
+This program is free software; you can redistribute it and/or modify it
+under the same terms as Perl itself.
41 cover_db/blib-lib-Sub-Install-pm--branch.html
@@ -0,0 +1,41 @@
+<!--
+This file was generated by Devel::Cover Version 0.53
+Devel::Cover is copyright 2001-2004, Paul Johnson (pjcj@cpan.org)
+Devel::Cover is free. It is licensed under the same terms as Perl itself.
+The latest version of Devel::Cover should be available from my homepage:
+http://www.pjcj.net
+-->
+
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN"
+ "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></meta>
+<meta http-equiv="Content-Language" content="en-us"></meta>
+<link rel="stylesheet" type="text/css" href="cover.css"></link>
+<title>Branch Coverage: blib/lib/Sub/Install.pm</title>
+</head>
+<body>
+<h1>Branch Coverage</h1>
+<table>
+<tr><td class="h" align="right">File:</td><td align="left">blib/lib/Sub/Install.pm</td></tr>
+<tr><td class="h" align="right">Coverage:</td><td align="left" class="c2">95.5%</td></tr>
+</table>
+<div><br/></div>
+<table>
+<tr><th>line</th><th>%</th><th colspan="2">coverage</th><th>branch</th></tr>
+<tr><td class="h"><a id="L107">107</a></td><td class="c3">100</td><td class="c3">T</td><td class="c3">F</td><td class="s">unless $$arg{&#39;into&#39;}</td></tr>
+<tr><td class="h"><a id="L108">108</a></td><td class="c3">100</td><td class="c3">T</td><td class="c3">F</td><td class="s">unless $$arg{&#39;from&#39;}</td></tr>
+<tr><td class="h"><a id="L111">111</a></td><td class="c3">100</td><td class="c3">T</td><td class="c3">F</td><td class="s">unless $$arg{&#39;code&#39;}</td></tr>
+<tr><td class="h"><a id="L113">113</a></td><td class="c3">100</td><td class="c3">T</td><td class="c3">F</td><td class="s">if (ref $$arg{&#39;code&#39;} eq &#39;CODE&#39;) { }</td></tr>
+<tr><td class="h"><a id="L115">115</a></td><td class="c3">100</td><td class="c3">T</td><td class="c3">F</td><td class="s">unless ($$arg{&#39;as&#39;})</td></tr>
+<tr><td class="h"><a id="L118">118</a></td><td class="c3">100</td><td class="c3">T</td><td class="c3">F</td><td class="s">unless $name =~ /\A__ANON__/</td></tr>
+<tr><td class="h"><a id="L123">123</a></td><td class="c3">100</td><td class="c3">T</td><td class="c3">F</td><td class="s">unless $code</td></tr>
+<tr><td class="h"><a id="L126">126</a></td><td class="c3">100</td><td class="c3">T</td><td class="c3">F</td><td class="s">unless $$arg{&#39;as&#39;}</td></tr>
+<tr><td class="h"><a id="L130">130</a></td><td class="c3">100</td><td class="c3">T</td><td class="c3">F</td><td class="s">unless $$arg{&#39;as&#39;}</td></tr>
+<tr><td class="h"><a id="L168">168</a></td><td class="c0">50</td><td class="c0">T</td><td class="c3">F</td><td class="s">unless $$arg{&#39;into&#39;}</td></tr>
+<tr><td class="h"><a id="L204">204</a></td><td class="c3">100</td><td class="c3">T</td><td class="c3">F</td><td class="s">if $import{$_}</td></tr>
+</table>
+</body>
+</html>
44 cover_db/blib-lib-Sub-Install-pm--subroutine.html
@@ -0,0 +1,44 @@
+<!--
+This file was generated by Devel::Cover Version 0.53
+Devel::Cover is copyright 2001-2004, Paul Johnson (pjcj@cpan.org)
+Devel::Cover is free. It is licensed under the same terms as Perl itself.
+The latest version of Devel::Cover should be available from my homepage:
+http://www.pjcj.net
+-->
+
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN"
+ "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></meta>
+<meta http-equiv="Content-Language" content="en-us"></meta>
+<link rel="stylesheet" type="text/css" href="cover.css"></link>
+<title>Subroutine Coverage: blib/lib/Sub/Install.pm</title>
+</head>
+<body>
+<h1>Subroutine Coverage</h1>
+<table>
+<tr><td class="h" align="right">File:</td><td align="left">blib/lib/Sub/Install.pm</td></tr>
+<tr><td class="h" align="right">Coverage:</td><td align="left" class="c3">100.0%</td></tr>
+</table>
+<div><br/></div>
+<table>
+<tr><th>line</th><th>subroutine</th></tr>
+<tr><td class="h"><a id="L3">3</a></td><td class="c3"><div class="s">BEGIN</div></td></tr>
+<tr><td class="h"><a id="L4">4</a></td><td class="c3"><div class="s">BEGIN</div></td></tr>
+<tr><td class="h"><a id="L6">6</a></td><td class="c3"><div class="s">BEGIN</div></td></tr>
+<tr><td class="h"><a id="L85">85</a></td><td class="c3"><div class="s">install_sub</div></td></tr>
+<tr><td class="h"><a id="L96">96</a></td><td class="c3"><div class="s">reinstall_sub</div></td></tr>
+<tr><td class="h"><a id="L101">101</a></td><td class="c3"><div class="s">_process_arg_and_install</div></td></tr>
+<tr><td class="h"><a id="L140">140</a></td><td class="c3"><div class="s">_install</div></td></tr>
+<tr><td class="h"><a id="L141">141</a></td><td class="c3"><div class="s">BEGIN</div></td></tr>
+<tr><td class="h"><a id="L146">146</a></td><td class="c3"><div class="s">_reinstall</div></td></tr>
+<tr><td class="h"><a id="L147">147</a></td><td class="c3"><div class="s">BEGIN</div></td></tr>
+<tr><td class="h"><a id="L148">148</a></td><td class="c3"><div class="s">BEGIN</div></td></tr>
+<tr><td class="h"><a id="L165">165</a></td><td class="c3"><div class="s">install_installers</div></td></tr>
+<tr><td class="h"><a id="L174">174</a></td><td class="c3"><div class="s">__ANON__</div></td></tr>
+<tr><td class="h"><a id="L198">198</a></td><td class="c3"><div class="s">import</div></td></tr>
+</table>
+</body>
+</html>
244 cover_db/blib-lib-Sub-Install-pm.html
@@ -0,0 +1,244 @@
+<!--
+This file was generated by Devel::Cover Version 0.53
+Devel::Cover is copyright 2001-2004, Paul Johnson (pjcj@cpan.org)
+Devel::Cover is free. It is licensed under the same terms as Perl itself.
+The latest version of Devel::Cover should be available from my homepage:
+http://www.pjcj.net
+-->
+
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN"
+ "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></meta>
+<meta http-equiv="Content-Language" content="en-us"></meta>
+<link rel="stylesheet" type="text/css" href="cover.css"></link>
+<title>File Coverage: blib/lib/Sub/Install.pm</title>
+</head>
+<body>
+<h1>File Coverage</h1>
+<table>
+<tr><td class="h" align="right">File:</td><td align="left">blib/lib/Sub/Install.pm</td></tr>
+<tr><td class="h" align="right">Coverage:</td><td align="left" class="c2">99.0%</td></tr>
+</table>
+<div><br/></div>
+<table>
+<tr><th>line</th><th>stmt</th><th>branch</th><th>cond</th><th>sub</th><th>pod</th><th>time</th><th>code</th></tr>
+<tr><td class="h">1</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">package Sub::Install;</td></tr>
+<tr><td class="h">2</td><td colspan="7"></td></tr><tr><td class="h">3</td><td><div class="c3">8</div><div class="c3">8</div><div class="c3">8</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-Sub-Install-pm--subroutine.html#L3">8</a></div></td><td></td><td><div>262</div><div>46</div><div>292</div></td><td class="s">use warnings;</td></tr>
+<tr><td class="h">4</td><td><div class="c3">8</div><div class="c3">8</div><div class="c3">8</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-Sub-Install-pm--subroutine.html#L4">8</a></div></td><td></td><td><div>297</div><div>52</div><div>154</div></td><td class="s">use strict;</td></tr>
+<tr><td class="h">5</td><td colspan="7"></td></tr><tr><td class="h">6</td><td><div class="c3">8</div><div class="c3">8</div><div class="c3">8</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-Sub-Install-pm--subroutine.html#L6">8</a></div></td><td></td><td><div>178</div><div>47</div><div>271</div></td><td class="s">use Carp qw(croak);</td></tr>
+<tr><td class="h">7</td><td colspan="7"></td></tr><tr><td class="h">8 - 18</td><td colspan="6"></td><td class="s"><pre>=head1 NAME
+
+Sub::Install - install subroutines into packages easily
+
+=head1 VERSION
+
+version 0.02
+
+ $Id: /my/rjbs/subinst/trunk/lib/Sub/Install.pm 16619 2005-11-22T16:34:02.590722Z rjbs $
+
+=cut</pre></td></tr>
+<tr><td class="h">19</td><td colspan="7"></td></tr><tr><td class="h">20</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">our $VERSION = &#39;0.02&#39;;</td></tr>
+<tr><td class="h">21</td><td colspan="7"></td></tr><tr><td class="h">22 - 82</td><td colspan="6"></td><td class="s"><pre>=head1 SYNOPSIS
+
+ use Sub::Install;
+
+ Sub::Install::install_sub({
+ code =&gt; sub { ... },
+ into =&gt; $package,
+ as =&gt; $subname
+ });
+
+=head1 DESCRIPTION
+
+This module makes it easy to install subroutines into packages without the
+unslightly mess of C&lt;no strict&gt; or typeglobs lying about where just anyone can
+see them.
+
+=head1 FUNCTIONS
+
+=head2 C&lt; install_sub &gt;
+
+ Sub::Install::install_sub({
+ code =&gt; \&amp;subroutine,
+ into =&gt; &quot;Finance::Shady&quot;,
+ as =&gt; &#39;launder&#39;,
+ });
+
+This routine installs a given code reference into a package as a normal
+subroutine. The above is equivalent to:
+
+ no strict &#39;refs&#39;;
+ *{&quot;Finance::Shady&quot; . &#39;::&#39; . &quot;launder&quot;} = \&amp;subroutine;
+
+If C&lt;into&gt; is not given, the sub is installed into the calling package.
+
+If C&lt;code&gt; is not a code reference, it is looked for as an existing sub in the
+package named in the C&lt;from&gt; parameter. If C&lt;from&gt; is not given, it will look
+in the calling package.
+
+If C&lt;as&gt; is not given, and if C&lt;code&gt; is a name, C&lt;as&gt; will default to C&lt;code&gt;.
+If C&lt;as&gt; is not given, but if C&lt;code&gt; is a code ref, Sub::Install will try to
+find the name of the given code ref and use that as C&lt;as&gt;.
+
+That means that this code:
+
+ Sub::Install::install_sub({
+ code =&gt; &#39;twitch&#39;,
+ from =&gt; &#39;Person::InPain&#39;,
+ into =&gt; &#39;Person::Teenager&#39;,
+ as =&gt; &#39;dance&#39;,
+ });
+
+is the same as:
+
+ package Person::Teenager;
+
+ Sub::Install::install_sub({
+ code =&gt; Person::InPain-&gt;can(&#39;twitch&#39;),
+ as =&gt; &#39;dance&#39;,
+ });
+
+=cut</pre></td></tr>
+<tr><td class="h">83</td><td colspan="7"></td></tr><tr><td class="h">84</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub install_sub {</td></tr>
+<tr><td class="h">85</td><td><div class="c3">22</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-Sub-Install-pm--subroutine.html#L85">22</a></div></td><td><div class="c3">1</div></td><td><div>37006</div></td><td class="s">&nbsp;&nbsp;_process_arg_and_install($_[0], \&amp;_install);</td></tr>
+<tr><td class="h">86</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
+<tr><td class="h">87</td><td colspan="7"></td></tr><tr><td class="h">88 - 93</td><td colspan="6"></td><td class="s"><pre>=head2 C&lt; reinstall_sub &gt;
+
+This routine behaves exactly like C&lt;L&lt;/install_sub&gt;&gt;, but does not emit a
+warning if warnings are on and the destination is already defined.
+
+=cut</pre></td></tr>
+<tr><td class="h">94</td><td colspan="7"></td></tr><tr><td class="h">95</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub reinstall_sub {</td></tr>
+<tr><td class="h">96</td><td><div class="c3">9</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-Sub-Install-pm--subroutine.html#L96">9</a></div></td><td><div class="c3">1</div></td><td><div>13360</div></td><td class="s">&nbsp;&nbsp;_process_arg_and_install($_[0], \&amp;_reinstall);</td></tr>
+<tr><td class="h">97</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
+<tr><td class="h">98</td><td colspan="7"></td></tr><tr><td class="h">99</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s"># do the heavy lifting</td></tr>
+<tr><td class="h">100</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub _process_arg_and_install {</td></tr>
+<tr><td class="h">101</td><td><div class="c3">31</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-Sub-Install-pm--subroutine.html#L101">31</a></div></td><td></td><td><div>251</div></td><td class="s">&nbsp;&nbsp;my ($arg, $installer) = @_;</td></tr>
+<tr><td class="h">102</td><td colspan="7"></td></tr><tr><td class="h">103</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;# We&#39;re &quot;guaranteed&quot; to be called by one layer of indirection.</td></tr>
+<tr><td class="h">104</td><td><div class="c3">31</div></td><td></td><td></td><td></td><td></td><td><div>934</div></td><td class="s">&nbsp;&nbsp;my ($calling_pkg) = caller(1);</td></tr>
+<tr><td class="h">105</td><td colspan="7"></td></tr><tr><td class="h">106</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;# I&#39;d rather use ||= but I&#39;m whoring for Devel::Cover.</td></tr>
+<tr><td class="h">107</td><td><div class="c3">31</div></td><td><div class="c3" title="T/F"><a href="blib-lib-Sub-Install-pm--branch.html#L107">100</a></div></td><td></td><td></td><td></td><td><div>578</div></td><td class="s">&nbsp;&nbsp;$arg-&gt;{into} = $calling_pkg unless $arg-&gt;{into};</td></tr>
+<tr><td class="h">108</td><td><div class="c3">31</div></td><td><div class="c3" title="T/F"><a href="blib-lib-Sub-Install-pm--branch.html#L108">100</a></div></td><td></td><td></td><td></td><td><div>606</div></td><td class="s">&nbsp;&nbsp;$arg-&gt;{from} = $calling_pkg unless $arg-&gt;{from};</td></tr>
+<tr><td class="h">109</td><td colspan="7"></td></tr><tr><td class="h">110</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;# This is the only absolutely required argument, in many cases.</td></tr>
+<tr><td class="h">111</td><td><div class="c3">31</div></td><td><div class="c3" title="T/F"><a href="blib-lib-Sub-Install-pm--branch.html#L111">100</a></div></td><td></td><td></td><td></td><td><div>293</div></td><td class="s">&nbsp;&nbsp;croak &quot;named argument &#39;code&#39; is not optional&quot; unless $arg-&gt;{code};</td></tr>
+<tr><td class="h">112</td><td colspan="7"></td></tr><tr><td class="h">113</td><td><div class="c3">30</div></td><td><div class="c3" title="T/F"><a href="blib-lib-Sub-Install-pm--branch.html#L113">100</a></div></td><td></td><td></td><td></td><td><div>402</div></td><td class="s">&nbsp;&nbsp;if (ref $arg-&gt;{code} eq &#39;CODE&#39;) {</td></tr>
+<tr><td class="h">114</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;# try to generate target name by looking up source&#39;s name</td></tr>
+<tr><td class="h">115</td><td><div class="c3">24</div></td><td><div class="c3" title="T/F"><a href="blib-lib-Sub-Install-pm--branch.html#L115">100</a></div></td><td></td><td></td><td></td><td><div>208</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;unless ($arg-&gt;{as}) {</td></tr>
+<tr><td class="h">116</td><td><div class="c3">2</div></td><td></td><td></td><td></td><td></td><td><div>45</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;require B;</td></tr>
+<tr><td class="h">117</td><td><div class="c3">2</div></td><td></td><td></td><td></td><td></td><td><div>188</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my $name = B::svref_2object($arg-&gt;{code})-&gt;GV-&gt;NAME; </td></tr>
+<tr><td class="h">118</td><td><div class="c3">2</div></td><td><div class="c3" title="T/F"><a href="blib-lib-Sub-Install-pm--branch.html#L118">100</a></div></td><td></td><td></td><td></td><td><div>417</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$arg-&gt;{as} = $name unless $name =~ /\A__ANON__/;</td></tr>
+<tr><td class="h">119</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;}</td></tr>
+<tr><td class="h">120</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;} else {</td></tr>
+<tr><td class="h">121</td><td><div class="c3">6</div></td><td></td><td></td><td></td><td></td><td><div>266</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;my $code = $arg-&gt;{from}-&gt;can($arg-&gt;{code});</td></tr>
+<tr><td class="h">122</td><td colspan="7"></td></tr><tr><td class="h">123</td><td><div class="c3">6</div></td><td><div class="c3" title="T/F"><a href="blib-lib-Sub-Install-pm--branch.html#L123">100</a></div></td><td></td><td></td><td></td><td><div>95</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;croak &quot;couldn&#39;t find subroutine named $arg-&gt;{code} in package $arg-&gt;{from}&quot;</td></tr>
+<tr><td class="h">124</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unless $code;</td></tr>
+<tr><td class="h">125</td><td colspan="7"></td></tr><tr><td class="h">126</td><td><div class="c3">5</div></td><td><div class="c3" title="T/F"><a href="blib-lib-Sub-Install-pm--branch.html#L126">100</a></div></td><td></td><td></td><td></td><td><div>201</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;$arg-&gt;{as} = $arg-&gt;{code} unless $arg-&gt;{as};</td></tr>
+<tr><td class="h">127</td><td><div class="c3">5</div></td><td></td><td></td><td></td><td></td><td><div>52</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;$arg-&gt;{code} = $code;</td></tr>
+<tr><td class="h">128</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;}</td></tr>
+<tr><td class="h">129</td><td colspan="7"></td></tr><tr><td class="h">130</td><td><div class="c3">29</div></td><td><div class="c3" title="T/F"><a href="blib-lib-Sub-Install-pm--branch.html#L130">100</a></div></td><td></td><td></td><td></td><td><div>230</div></td><td class="s">&nbsp;&nbsp;croak &quot;couldn&#39;t determine name under which to install subroutine&quot;</td></tr>
+<tr><td class="h">131</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;unless $arg-&gt;{as};</td></tr>
+<tr><td class="h">132</td><td colspan="7"></td></tr><tr><td class="h">133</td><td><div class="c3">28</div></td><td></td><td></td><td></td><td></td><td><div>420</div></td><td class="s">&nbsp;&nbsp;$installer-&gt;($arg-&gt;{code} =&gt; $arg-&gt;{into} . &#39;::&#39; . $arg-&gt;{as});</td></tr>
+<tr><td class="h">134</td><td colspan="7"></td></tr><tr><td class="h">135</td><td><div class="c3">28</div></td><td></td><td></td><td></td><td></td><td><div>848</div></td><td class="s">&nbsp;&nbsp;return $arg-&gt;{code};</td></tr>
+<tr><td class="h">136</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
+<tr><td class="h">137</td><td colspan="7"></td></tr><tr><td class="h">138</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s"># do the ugly work</td></tr>
+<tr><td class="h">139</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub _install {</td></tr>
+<tr><td class="h">140</td><td><div class="c3">19</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-Sub-Install-pm--subroutine.html#L140">19</a></div></td><td></td><td><div>143</div></td><td class="s">&nbsp;&nbsp;my ($code, $fullname) = @_;</td></tr>
+<tr><td class="h">141</td><td><div class="c3">8</div><div class="c3">8</div><div class="c3">8</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-Sub-Install-pm--subroutine.html#L141">8</a></div></td><td></td><td><div>384</div><div>60</div><div>164</div></td><td class="s">&nbsp;&nbsp;no strict &#39;refs&#39;;</td></tr>
+<tr><td class="h">142</td><td><div class="c3">19</div></td><td></td><td></td><td></td><td></td><td><div>380</div></td><td class="s">&nbsp;&nbsp;*$fullname = $code;</td></tr>
+<tr><td class="h">143</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
+<tr><td class="h">144</td><td colspan="7"></td></tr><tr><td class="h">145</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub _reinstall {</td></tr>
+<tr><td class="h">146</td><td><div class="c3">9</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-Sub-Install-pm--subroutine.html#L146">9</a></div></td><td></td><td><div>62</div></td><td class="s">&nbsp;&nbsp;my ($code, $fullname) = @_;</td></tr>
+<tr><td class="h">147</td><td><div class="c3">8</div><div class="c3">8</div><div class="c3">8</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-Sub-Install-pm--subroutine.html#L147">8</a></div></td><td></td><td><div>226</div><div>46</div><div>168</div></td><td class="s">&nbsp;&nbsp;no strict &#39;refs&#39;;</td></tr>
+<tr><td class="h">148</td><td><div class="c3">8</div><div class="c3">8</div><div class="c3">8</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-Sub-Install-pm--subroutine.html#L148">8</a></div></td><td></td><td><div>170</div><div>39</div><div>173</div></td><td class="s">&nbsp;&nbsp;no warnings;</td></tr>
+<tr><td class="h">149</td><td><div class="c3">9</div></td><td></td><td></td><td></td><td></td><td><div>126</div></td><td class="s">&nbsp;&nbsp;*$fullname = $code;</td></tr>
+<tr><td class="h">150</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
+<tr><td class="h">151</td><td colspan="7"></td></tr><tr><td class="h">152 - 162</td><td colspan="6"></td><td class="s"><pre>=head2 C&lt; install_installers &gt;
+
+This routine is provided to allow Sub::Install compatibility with
+Sub::Installer. It installs C&lt;install_sub&gt; and C&lt;reinstall_sub&gt; methods on the
+package in its C&lt;into&gt; argument.
+
+ Sub::Install::install_installers(&#39;Code::Builder&#39;); # just for us, please
+
+ Sub::Install::install_installers(&#39;UNIVERSAL&#39;); # feeling lucky, punk?
+
+=cut</pre></td></tr>
+<tr><td class="h">163</td><td colspan="7"></td></tr><tr><td class="h">164</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub install_installers {</td></tr>
+<tr><td class="h">165</td><td><div class="c3">2</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-Sub-Install-pm--subroutine.html#L165">2</a></div></td><td><div class="c3">1</div></td><td><div>89</div></td><td class="s">&nbsp;&nbsp;my ($arg) = @_;</td></tr>
+<tr><td class="h">166</td><td colspan="7"></td></tr><tr><td class="h">167</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;# set up default target here</td></tr>
+<tr><td class="h">168</td><td><div class="c3">2</div></td><td><div class="c0" title="-/F"><a href="blib-lib-Sub-Install-pm--branch.html#L168">50</a></div></td><td></td><td></td><td></td><td><div>32</div></td><td class="s">&nbsp;&nbsp;($arg-&gt;{into}) = caller(0) unless $arg-&gt;{into};</td></tr>
+<tr><td class="h">169</td><td colspan="7"></td></tr><tr><td class="h">170</td><td><div class="c3">2</div></td><td></td><td></td><td></td><td></td><td><div>22</div></td><td class="s">&nbsp;&nbsp;my @methods = qw(install_sub reinstall_sub);</td></tr>
+<tr><td class="h">171</td><td colspan="7"></td></tr><tr><td class="h">172</td><td><div class="c3">2</div></td><td></td><td></td><td></td><td></td><td><div>22</div></td><td class="s">&nbsp;&nbsp;for my $method (@methods) {</td></tr>
+<tr><td class="h">173</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;my $code = sub {</td></tr>
+<tr><td class="h">174</td><td><div class="c3">6</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-Sub-Install-pm--subroutine.html#L174">6</a></div></td><td></td><td><div>18065</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my ($package, $subs) = @_;</td></tr>
+<tr><td class="h">175</td><td><div class="c3">6</div></td><td></td><td></td><td></td><td></td><td><div>41</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my $return;</td></tr>
+<tr><td class="h">176</td><td><div class="c3">6</div></td><td></td><td></td><td></td><td></td><td><div>186</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (my ($name, $sub) = %$subs) {</td></tr>
+<tr><td class="h">177</td><td><div class="c3">12</div></td><td></td><td></td><td></td><td></td><td><div>756</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$return = Sub::Install-&gt;can($method)-&gt;({</td></tr>
+<tr><td class="h">178</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;code =&gt; $sub,</td></tr>
+<tr><td class="h">179</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;into =&gt; $package,</td></tr>
+<tr><td class="h">180</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;as =&gt; $name</td></tr>
+<tr><td class="h">181</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});</td></tr>
+<tr><td class="h">182</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</td></tr>
+<tr><td class="h">183</td><td><div class="c3">6</div></td><td></td><td></td><td></td><td></td><td><div>245</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $return;</td></tr>
+<tr><td class="h">184</td><td><div class="c3">4</div></td><td></td><td></td><td></td><td></td><td><div>118</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;};</td></tr>
+<tr><td class="h">185</td><td><div class="c3">4</div></td><td></td><td></td><td></td><td></td><td><div>82</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;install_sub({ code =&gt; $code, into =&gt; $arg-&gt;{into}, as =&gt; $method });</td></tr>
+<tr><td class="h">186</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;}</td></tr>
+<tr><td class="h">187</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
+<tr><td class="h">188</td><td colspan="7"></td></tr><tr><td class="h">189</td><td colspan="7"></td></tr><tr><td class="h">190 - 195</td><td colspan="6"></td><td class="s"><pre>=head1 EXPORTS
+
+Sub::Install exports C&lt;install_sub&gt; and C&lt;reinstall_sub&gt; only if they are
+requested.
+
+=cut</pre></td></tr>
+<tr><td class="h">196</td><td colspan="7"></td></tr><tr><td class="h">197</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub import {</td></tr>
+<tr><td class="h">198</td><td><div class="c3">7</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-Sub-Install-pm--subroutine.html#L198">7</a></div></td><td></td><td><div>79</div></td><td class="s">&nbsp;&nbsp;my $class = shift;</td></tr>
+<tr><td class="h">199</td><td><div class="c3">7</div><div class="c3">3</div></td><td></td><td></td><td></td><td></td><td><div>223</div><div>158</div></td><td class="s">&nbsp;&nbsp;my %import = map { $_ =&gt; 1 } @_;</td></tr>
+<tr><td class="h">200</td><td><div class="c3">7</div></td><td></td><td></td><td></td><td></td><td><div>560</div></td><td class="s">&nbsp;&nbsp;my ($target) = caller(0);</td></tr>
+<tr><td class="h">201</td><td colspan="7"></td></tr><tr><td class="h">202</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;# eating my own dogfood</td></tr>
+<tr><td class="h">203</td><td><div class="c3">7</div></td><td></td><td></td><td></td><td></td><td><div>141</div></td><td class="s">&nbsp;&nbsp;for (qw(install_sub reinstall_sub)) {</td></tr>
+<tr><td class="h">204</td><td><div class="c3">14</div></td><td><div class="c3" title="T/F"><a href="blib-lib-Sub-Install-pm--branch.html#L204">100</a></div></td><td></td><td></td><td></td><td><div>265</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;install_sub({ code =&gt; $_, into =&gt; $target }) if ($import{$_});</td></tr>
+<tr><td class="h">205</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;}</td></tr>
+<tr><td class="h">206</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
+<tr><td class="h">207</td><td colspan="7"></td></tr><tr><td class="h">208 - 243</td><td colspan="6"></td><td class="s"><pre>=head1 SEE ALSO
+
+=over
+
+=item L&lt;Sub::Installer&gt;
+
+This module is (obviously) a reaction to Damian Conway&#39;s Sub::Installer, which
+does the same thing, but does it by getting its greasy fingers all over
+UNIVERSAL. I was really happy about the idea of making the installation of
+coderefs less ugly, but I couldn&#39;t bring myself to replace the ugliness of
+typeglobs and loosened strictures with the ugliness of UNIVERSAL methods.
+
+=back
+
+=head1 AUTHOR
+
+Ricardo Signes, C&lt;&lt; &lt;rjbs@cpan.org&gt; &gt;&gt;
+
+Several of the tests are adapted from tests that shipped with Damian Conway&#39;s
+Sub-Installer distribution.
+
+=head1 BUGS
+
+Please report any bugs or feature requests to C&lt;bug-sub-install@rt.cpan.org&gt;,
+or through the web interface at L&lt;http://rt.cpan.org&gt;. I will be notified, and
+then you&#39;ll automatically be notified of progress on your bug as I make
+changes.
+
+=head1 COPYRIGHT
+
+Copyright 2005 Ricardo Signes, All Rights Reserved.
+
+This program is free software; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+
+=cut</pre></td></tr>
+<tr><td class="h">244</td><td colspan="7"></td></tr><tr><td class="h">245</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">1;</td></tr>
+</table>
+</body>
+</html>
BIN cover_db/cover.12
Binary file not shown.
74 cover_db/cover.css
@@ -0,0 +1,74 @@
+/* Stylesheet for Devel::Cover HTML reports */
+
+/* You may modify this file to alter the appearance of your coverage
+ * reports. If you do, you should probably flag it read-only to prevent
+ * future runs from overwriting it.
+ */
+
+/* Note: default values use the color-safe web palette. */
+
+body {
+ font-family: sans-serif;
+}
+
+h1 {
+ background-color: #3399ff;
+ border: solid 1px #999999;
+ padding: 0.2em;
+ -moz-border-radius: 10px;
+}
+
+a {
+ color: #000000;
+}
+a:visited {
+ color: #333333;
+}
+
+table {
+ border-spacing: 1px;
+}
+tr {
+ text-align : center;
+ vertical-align: top;
+}
+th,.h {
+ background-color: #cccccc;
+ border: solid 1px #333333;
+ padding-left: 0.2em;
+ padding-right: 0.2em;
+}
+td {
+ border: solid 1px #cccccc;
+}
+
+/* source code */
+pre,.s {
+ text-align: left;
+ font-family: monospace;
+ white-space: pre;
+ padding: 0em 0.5em 0em 0.5em;
+}
+
+/* Classes for color-coding coverage information:
+ * c0 : path not covered or coverage < 75%
+ * c1 : coverage >= 75%
+ * c2 : coverage >= 90%
+ * c3 : path covered or coverage = 100%
+ */
+.c0 {
+ background-color: #ff9999;
+ border: solid 1px #cc0000;
+}
+.c1 {
+ background-color: #ffcc99;
+ border: solid 1px #ff9933;
+}
+.c2 {
+ background-color: #ffff99;
+ border: solid 1px #cccc66;
+}
+.c3 {
+ background-color: #99ff99;
+ border: solid 1px #009900;
+}
31 cover_db/coverage.html
@@ -0,0 +1,31 @@
+<!--
+This file was generated by Devel::Cover Version 0.53
+Devel::Cover is copyright 2001-2004, Paul Johnson (pjcj@cpan.org)
+Devel::Cover is free. It is licensed under the same terms as Perl itself.
+The latest version of Devel::Cover should be available from my homepage:
+http://www.pjcj.net
+-->
+
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN"
+ "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></meta>
+<meta http-equiv="Content-Language" content="en-us"></meta>
+<link rel="stylesheet" type="text/css" href="cover.css"></link>
+<title>Coverage Summary</title>
+</head>
+<body>
+<h1>Coverage Summary</h1>
+<table>
+<tr><td class="h" align="right">Database:</td><td align="left">/Users/rjbs/code/subinst/trunk/cover_db</td></tr>
+</table>
+<div><br/></div>
+<table>
+<tr><th>file</th><th>stmt</th><th>branch</th><th>cond</th><th>sub</th><th>pod</th><th>time</th><th>total</th></tr>
+<tr><td align="left"><a href="blib-lib-Sub-Install-pm.html">blib/lib/Sub/Install.pm</a></td><td class="c3" title="58 / 58">100.0</td><td class="c2" title="21 / 22"><a href="blib-lib-Sub-Install-pm--branch.html">95.5</a></td><td>n/a</td><td class="c3" title="14 / 14"><a href="blib-lib-Sub-Install-pm--subroutine.html">100.0</a></td><td class="c3" title="3 / 3">100.0</td><td>100.0</td><td class="c2" title="96 / 97">99.0</td></tr>
+<tr><td align="left">Total</td><td class="c3" title="58 / 58">100.0</td><td class="c2" title="21 / 22">95.5</td><td>n/a</td><td class="c3" title="14 / 14">100.0</td><td class="c3" title="3 / 3">100.0</td><td>100.0</td><td class="c2" title="96 / 97">99.0</td></tr>
+</table>
+</body>
+</html>
BIN cover_db/structure/5c6db98575cdadb29a892761ff90d59d
Binary file not shown.
0 errors.err
No changes.
169 inc/Module/Install.pm
@@ -0,0 +1,169 @@
+#line 1 "inc/Module/Install.pm - /usr/local/lib/perl5/site_perl/5.8.7/Module/Install.pm"
+package Module::Install;
+$VERSION = '0.39';
+
+die << "." unless $INC{join('/', inc => split(/::/, __PACKAGE__)).'.pm'};
+Please invoke ${\__PACKAGE__} with:
+
+ use inc::${\__PACKAGE__};
+
+not:
+
+ use ${\__PACKAGE__};
+
+.
+
+use strict 'vars';
+use Cwd ();
+use File::Find ();
+use File::Path ();
+
+@inc::Module::Install::ISA = 'Module::Install';
+*inc::Module::Install::VERSION = *VERSION;
+
+#line 130
+
+sub import {
+ my $class = shift;
+ my $self = $class->new(@_);
+
+ if (not -f $self->{file}) {
+ require "$self->{path}/$self->{dispatch}.pm";
+ File::Path::mkpath("$self->{prefix}/$self->{author}");
+ $self->{admin} =
+ "$self->{name}::$self->{dispatch}"->new(_top => $self);
+ $self->{admin}->init;
+ @_ = ($class, _self => $self);
+ goto &{"$self->{name}::import"};
+ }
+
+ *{caller(0) . "::AUTOLOAD"} = $self->autoload;
+
+ # Unregister loader and worker packages so subdirs can use them again
+ delete $INC{"$self->{file}"};
+ delete $INC{"$self->{path}.pm"};
+}
+
+#line 157
+
+sub autoload {
+ my $self = shift;
+ my $caller = caller;
+
+ my $cwd = Cwd::cwd();
+ my $sym = "$caller\::AUTOLOAD";
+
+ $sym->{$cwd} = sub {
+ my $pwd = Cwd::cwd();
+ if (my $code = $sym->{$pwd}) {
+ goto &$code unless $cwd eq $pwd; # delegate back to parent dirs
+ }
+ $$sym =~ /([^:]+)$/ or die "Cannot autoload $caller";
+ unshift @_, ($self, $1);
+ goto &{$self->can('call')} unless uc($1) eq $1;
+ };
+}
+
+#line 182
+
+sub new {
+ my ($class, %args) = @_;
+
+ return $args{_self} if $args{_self};
+
+ $args{dispatch} ||= 'Admin';
+ $args{prefix} ||= 'inc';
+ $args{author} ||= '.author';
+ $args{bundle} ||= 'inc/BUNDLES';
+
+ $class =~ s/^\Q$args{prefix}\E:://;
+ $args{name} ||= $class;
+ $args{version} ||= $class->VERSION;
+
+ unless ($args{path}) {
+ $args{path} = $args{name};
+ $args{path} =~ s!::!/!g;
+ }
+ $args{file} ||= "$args{prefix}/$args{path}.pm";
+
+ bless(\%args, $class);
+}
+
+#line 211
+
+sub call {
+ my $self = shift;
+ my $method = shift;
+ my $obj = $self->load($method) or return;
+
+ unshift @_, $obj;
+ goto &{$obj->can($method)};
+}
+
+#line 226
+
+sub load {
+ my ($self, $method) = @_;
+
+ $self->load_extensions(
+ "$self->{prefix}/$self->{path}", $self
+ ) unless $self->{extensions};
+
+ foreach my $obj (@{$self->{extensions}}) {
+ return $obj if $obj->can($method);
+ }
+
+ my $admin = $self->{admin} or die << "END";
+The '$method' method does not exist in the '$self->{prefix}' path!
+Please remove the '$self->{prefix}' directory and run $0 again to load it.
+END
+
+ my $obj = $admin->load($method, 1);
+ push @{$self->{extensions}}, $obj;
+
+ $obj;
+}
+
+#line 256
+
+sub load_extensions {
+ my ($self, $path, $top_obj) = @_;
+
+ unshift @INC, $self->{prefix}
+ unless grep { $_ eq $self->{prefix} } @INC;
+
+ local @INC = ($path, @INC);
+ foreach my $rv ($self->find_extensions($path)) {
+ my ($file, $pkg) = @{$rv};
+ next if $self->{pathnames}{$pkg};
+
+ eval { require $file; 1 } or (warn($@), next);
+ $self->{pathnames}{$pkg} = delete $INC{$file};
+ push @{$self->{extensions}}, $pkg->new( _top => $top_obj );
+ }
+}
+
+#line 280
+
+sub find_extensions {
+ my ($self, $path) = @_;
+ my @found;
+
+ File::Find::find(sub {
+ my $file = $File::Find::name;
+ return unless $file =~ m!^\Q$path\E/(.+)\.pm\Z!is;