Upgrade to SelfLoader 1.13_03
authorRafael Garcia-Suarez <rgarciasuarez@gmail.com>
Fri, 4 Jan 2008 15:48:32 +0000 (15:48 +0000)
committerRafael Garcia-Suarez <rgarciasuarez@gmail.com>
Fri, 4 Jan 2008 15:48:32 +0000 (15:48 +0000)
p4raw-id: //depot/perl@32830

lib/SelfLoader.pm
lib/SelfLoader/t/01SelfLoader.t
lib/SelfLoader/t/02SelfLoader-buggy.t

index da89094..b53587f 100644 (file)
@@ -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.12";
-sub Version {$VERSION}
-sub DEBUG () { 0 }
-
-my %Cache;      # private cache for all SelfLoader's client packages
-
+our $VERSION = "1.13_03";
+
+# 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/^\s*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
index feadd3d..99ba997 100755 (executable)
@@ -1,5 +1,3 @@
-#!./perl
-
 BEGIN {
     chdir 't' if -d 't';
     $dir = "self-$$";
@@ -10,8 +8,8 @@ BEGIN {
        $sep = ":";
     }
 
-    @INC = $dir;
-    push @INC, '../lib';
+    unshift @INC, $dir;
+    unshift @INC, '../lib';
 
     print "1..20\n";
 
index 02da93c..7845d05 100644 (file)
@@ -1,5 +1,3 @@
-#!./perl
-
 BEGIN {
     if( $ENV{PERL_CORE} ) {
         chdir 't' if -d 't';