summaryrefslogtreecommitdiff
path: root/lib/SelfLoader.pm
diff options
context:
space:
mode:
authorNicholas Clark <nick@ccl4.org>2008-01-29 22:22:25 +0000
committerNicholas Clark <nick@ccl4.org>2008-01-29 22:22:25 +0000
commit589dd5711f659be32e0513fcc81de5516290c5de (patch)
tree3c9b1ef616c55c6c801a07999cb9e93613a7311d /lib/SelfLoader.pm
parenta7c870cb83f2eb9227eabe4b0db8821486038837 (diff)
downloadperl-589dd5711f659be32e0513fcc81de5516290c5de.tar.gz
Integrate:
[ 32652] Upgrade to File-Temp-0.19 [ 32657] Fix a File::Temp test to deal with new Test::More changes. [ 32665] Subject: Re: [perl #48769] [PATCH] SelfLoader.pm 1.0904 - Whitespace in subroutine From: Steffen Mueller <l2ot9pa02@sneakemail.com> Date: Tue, 18 Dec 2007 11:58:19 +0100 Message-ID: <4767A7CB.5030607@sneakemail.com> [ 32666] Correct the test count in lib/File/Temp/t/lock.t I guess that it was skipped in rather too many places, so no-one noticed. [ 32735] Upgrade to File-Temp-0.20 [ 32787] Upgrade to AutoLoader-5.64 [ 32800] Upgrade to constant-1.15 [ 32814] Upgrade to Net-Ping-2.34 [ 32829] Move the SelfLoader test files in their own subdirectory [ 32830] Upgrade to SelfLoader 1.13_03 [ 32871] Subject: Re: Smoke [5.11.0] 32864 FAIL(F) MSWin32 Win2003 SP2 (x86/1 cpu) From: Abe Timmerman <abe@ztreet.demon.nl> Date: Sun, 06 Jan 2008 12:24:10 +0100 Message-ID: <4780BA5A.80202@ztreet.demon.nl> Skip lib/File/Temp/t/fork.t when there is no fork. [ 32885] Subject: [PATCH] Cleanup File::Temp test file (revised) From: "Jerry D. Hedden" <jdhedden@cpan.org> Date: Fri, 4 Jan 2008 12:39:35 -0500 Message-ID: <1ff86f510801040939t560c459dm6b780ab3dc5cc6c3@mail.gmail.com> [ 32903] Subject: [PATCH] AutoLoader: Remove AutoLoader::can From: Steffen Mueller <l2ot9pa02@sneakemail.com> Date: Fri, 30 Nov 2007 23:02:03 +0100 Message-ID: <20071130220203.26939.qmail@lists.develooper.com> [ 33097] Upgrade to SelfLoader-1.15 [ 33098] Upgrade to Archive-Extract-0.26 [ 33099] Upgrade to Tie-RefHash-1.38 p4raw-link: @33099 on //depot/perl: 74175ec19875e69f93e52047b759e03b473638b8 p4raw-link: @33098 on //depot/perl: 8d2ac73b584b87e4bad5d63be12427d699364853 p4raw-link: @33097 on //depot/perl: b75eac34e2a299e58c22cff8f1e90b518e8af178 p4raw-link: @32903 on //depot/perl: 536daee00bd7944e598743396417656c3a6557b3 p4raw-link: @32885 on //depot/perl: 8725a05e43ef1f7a09400aa94832e01177df6059 p4raw-link: @32871 on //depot/perl: 00bfa1c17dfe43993c5f80f5019f11c8cfeb534a p4raw-link: @32830 on //depot/perl: 0a8174e120529e019d11628f9f09602f36c035ca p4raw-link: @32829 on //depot/perl: e4594d660ccfacc30d873d9cfc645abb4f26b9df p4raw-link: @32814 on //depot/perl: 09cae46f2f335675e85e10dbf61e95eeb6e56052 p4raw-link: @32800 on //depot/perl: 13e592d26647394079c61bb6e516c8e42802bf31 p4raw-link: @32787 on //depot/perl: 7a7524138a5c397ce82248e4a513d11be63af864 p4raw-link: @32735 on //depot/perl: a784fd7c04b5b7c80f2ffe634e5f2d348fbbad13 p4raw-link: @32666 on //depot/perl: 84a943b5b5fa4dfd9c368d1e3e5e07993fe24992 p4raw-link: @32665 on //depot/perl: 1163f0e44f6a46cda7ec19270939fa383e5709cd p4raw-link: @32657 on //depot/perl: 8fda732ba35b09fe6fd97b1463e2008d5752e71d p4raw-link: @32652 on //depot/perl: b0ad0448d7544a13783e055ccadcd950d6b847a1 p4raw-id: //depot/maint-5.10/perl@33113 p4raw-branched: from //depot/perl@33112 'branch in' lib/Archive/Extract/t/src/x.lzma.packed lib/AutoLoader/t/02AutoSplit.t lib/File/Temp/t/lock.t (@32666..) lib/AutoLoader/t/01AutoLoader.t (@32787..) lib/SelfLoader/t/02SelfLoader-buggy.t (@32829..) lib/SelfLoader/t/01SelfLoader.t (@32830..) p4raw-deleted: from //depot/perl@33112 'delete in' lib/AutoSplit.t (@25610..) lib/AutoLoader.t (@29750..) lib/SelfLoader-buggy.t (@31604..) p4raw-integrated: from //depot/perl@33112 'copy in' lib/File/Temp/t/object.t (@24068..) lib/File/Temp/t/seekable.t (@28755..) lib/AutoSplit.pm (@30824..) lib/Tie/RefHash.pm lib/Tie/RefHash/threaded.t (@31166..) lib/Net/Ping.pm (@31845..) lib/Archive/Extract.pm lib/Archive/Extract/t/01_Archive-Extract.t (@31928..) lib/constant.pm lib/constant.t (@32338..) lib/Net/Ping/t/510_ping_udp.t (@32428..) lib/AutoLoader.pm (@32787..) p4raw-branched: from //depot/perl@32885 'branch in' lib/File/Temp/t/fork.t (@32871..) p4raw-integrated: from //depot/perl@32830 'ignore' lib/SelfLoader.pm (@32665..) p4raw-integrated: from //depot/perl@32829 'edit in' MANIFEST (@32827..) p4raw-integrated: from //depot/perl@32735 'copy in' lib/File/Temp.pm (@32652..)
Diffstat (limited to 'lib/SelfLoader.pm')
-rw-r--r--lib/SelfLoader.pm118
1 files changed, 103 insertions, 15 deletions
diff --git a/lib/SelfLoader.pm b/lib/SelfLoader.pm
index 1136cf0909..5605c25742 100644
--- a/lib/SelfLoader.pm
+++ b/lib/SelfLoader.pm
@@ -1,21 +1,18 @@
package SelfLoader;
-
-use 5.009005; # due to new regexp features
+use 5.008;
use strict;
-
-use Exporter;
-our @ISA = qw(Exporter);
-our @EXPORT = qw(AUTOLOAD);
-our $VERSION = "1.11";
-sub Version {$VERSION}
-sub DEBUG () { 0 }
-
-my %Cache; # private cache for all SelfLoader's client packages
-
+our $VERSION = "1.15";
+
+# The following bit of eval-magic is necessary to make this work on
+# perls < 5.009005.
+use vars qw/$AttrList/;
+BEGIN {
+ if ($] > 5.009004) {
+ eval <<'NEWERPERL';
+use 5.009005; # due to new regexp features
# allow checking for valid ': attrlist' attachments
# see also AutoSplit
-
-my $attr_list = qr{
+$AttrList = qr{
\s* : \s*
(?:
# one attribute
@@ -27,6 +24,28 @@ my $attr_list = qr{
)*
}x;
+NEWERPERL
+ }
+ else {
+ eval <<'OLDERPERL';
+# allow checking for valid ': attrlist' attachments
+# (we use 'our' rather than 'my' here, due to the rather complex and buggy
+# behaviour of lexicals with qr// and (??{$lex}) )
+our $nested;
+$nested = qr{ \( (?: (?> [^()]+ ) | (??{ $nested }) )* \) }x;
+our $one_attr = qr{ (?> (?! \d) \w+ (?:$nested)? ) (?:\s*\:\s*|\s+(?!\:)) }x;
+$AttrList = qr{ \s* : \s* (?: $one_attr )* }x;
+OLDERPERL
+ }
+}
+use Exporter;
+our @ISA = qw(Exporter);
+our @EXPORT = qw(AUTOLOAD);
+sub Version {$VERSION}
+sub DEBUG () { 0 }
+
+my %Cache; # private cache for all SelfLoader's client packages
+
# in croak and carp, protect $@ from "require Carp;" RT #40216
sub croak { { local $@; require Carp; } goto &Carp::croak }
@@ -88,7 +107,7 @@ sub _load_stubs {
local($/) = "\n";
while(defined($line = <$fh>) and $line !~ m/^__END__/) {
- if ($line =~ m/^sub\s+([\w:]+)\s*((?:\([\\\$\@\%\&\*\;]*\))?(?:$attr_list)?)/) {
+ if ($line =~ m/^\s*sub\s+([\w:]+)\s*((?:\([\\\$\@\%\&\*\;]*\))?(?:$AttrList)?)/) {
push(@stubs, $self->_add_to_cache($name, $currpack, \@lines, $protoype));
$protoype = $2;
@lines = ($line);
@@ -343,4 +362,73 @@ will ensure that the packages 'foo' and 'baz' correctly have the
B<SelfLoader> C<AUTOLOAD> method when the data after C<__DATA__> is first
parsed.
+=head1 AUTHOR
+
+C<SelfLoader> is maintained by the perl5-porters. Please direct
+any questions to the canonical mailing list. Anything that
+is applicable to the CPAN release can be sent to its maintainer,
+though.
+
+Author and Maintainer: The Perl5-Porters <perl5-porters@perl.org>
+
+Maintainer of the CPAN release: Steffen Mueller <smueller@cpan.org>
+
+=head1 COPYRIGHT AND LICENSE
+
+This package has been part of the perl core since the first release
+of perl5. It has been released separately to CPAN so older installations
+can benefit from bug fixes.
+
+This package has the same copyright and license as the perl core:
+
+ Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+ 2000, 2001, 2002, 2003, 2004, 2005, 2006 by Larry Wall and others
+
+ All rights reserved.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of either:
+
+ a) the GNU General Public License as published by the Free
+ Software Foundation; either version 1, or (at your option) any
+ later version, or
+
+ b) the "Artistic License" which comes with this Kit.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See either
+ the GNU General Public License or the Artistic License for more details.
+
+ You should have received a copy of the Artistic License with this
+ Kit, in the file named "Artistic". If not, I'll be glad to provide one.
+
+ You should also have received a copy of the GNU General Public License
+ along with this program in the file named "Copying". If not, write to the
+ Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307, USA or visit their web page on the internet at
+ http://www.gnu.org/copyleft/gpl.html.
+
+ For those of you that choose to use the GNU General Public License,
+ my interpretation of the GNU General Public License is that no Perl
+ script falls under the terms of the GPL unless you explicitly put
+ said script under the terms of the GPL yourself. Furthermore, any
+ object code linked with perl does not automatically fall under the
+ terms of the GPL, provided such object code only adds definitions
+ of subroutines and variables, and does not otherwise impair the
+ resulting interpreter from executing any standard Perl script. I
+ consider linking in C subroutines in this manner to be the moral
+ equivalent of defining subroutines in the Perl language itself. You
+ may sell such an object file as proprietary provided that you provide
+ or offer to provide the Perl source, as specified by the GNU General
+ Public License. (This is merely an alternate way of specifying input
+ to the program.) You may also sell a binary produced by the dumping of
+ a running Perl script that belongs to you, provided that you provide or
+ offer to provide the Perl source as specified by the GPL. (The
+ fact that a Perl interpreter and your code are in the same binary file
+ is, in this case, a form of mere aggregation.) This is my interpretation
+ of the GPL. If you still have concerns or difficulties understanding
+ my intent, feel free to contact me. Of course, the Artistic License
+ spells all this out for your protection, so you may prefer to use that.
+
=cut