From: Tels Date: Sat, 2 Jul 2005 16:11:46 +0000 (+0000) Subject: do just-in-time loading of Carp.pm in some modules X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=8878f897ac9d9fa8a7f8ad4a14238341d36a293c;p=p5sagit%2Fp5-mst-13.2.git do just-in-time loading of Carp.pm in some modules Subject: [PATCH] No Carp #4 AutoSplit.pm Subject: [PATCH] no Carp #5 (File::Path) Subject: [PATCH] no Carp #7 - charnames.pm Subject: [PATCH] no Carp #6 (File::Compare, File::Copy, File::Temp) Subject: [PATCH] no Carp #8 - SelfLoader, Text/Balanced and open.pm p4raw-id: //depot/perl@25052 --- diff --git a/lib/AutoSplit.pm b/lib/AutoSplit.pm index e021e0f..bf0f925 100644 --- a/lib/AutoSplit.pm +++ b/lib/AutoSplit.pm @@ -3,7 +3,6 @@ package AutoSplit; use 5.006_001; use Exporter (); use Config qw(%Config); -use Carp qw(carp); use File::Basename (); use File::Path qw(mkpath); use File::Spec::Functions qw(curdir catfile catdir); @@ -11,7 +10,7 @@ use strict; our($VERSION, @ISA, @EXPORT, @EXPORT_OK, $Verbose, $Keep, $Maxlen, $CheckForAutoloader, $CheckModTime); -$VERSION = "1.04"; +$VERSION = "1.04_01"; @ISA = qw(Exporter); @EXPORT = qw(&autosplit &autosplit_lib_modules); @EXPORT_OK = qw($Verbose $Keep $Maxlen $CheckForAutoloader $CheckModTime); @@ -168,6 +167,10 @@ sub autosplit{ autosplit_file($file, $autodir, $keep, $ckal, $ckmt); } +sub carp{ + require Carp; + goto &Carp::carp; +} # This function is used during perl building/installation # ./miniperl -e 'use AutoSplit; autosplit_lib_modules(@ARGV)' ... @@ -405,14 +408,14 @@ EOT print " deleting $file\n" if ($Verbose>=2); my($deleted,$thistime); # catch all versions on VMS do { $deleted += ($thistime = unlink $file) } while ($thistime); - carp "Unable to delete $file: $!" unless $deleted; + carp ("Unable to delete $file: $!") unless $deleted; } closedir($outdir); } } open(my $ts,">$al_idx_file") or - carp "AutoSplit: unable to create timestamp file ($al_idx_file): $!"; + carp ("AutoSplit: unable to create timestamp file ($al_idx_file): $!"); print $ts "# Index created by AutoSplit for $filename\n"; print $ts "# (file acts as timestamp)\n"; $last_package = ''; diff --git a/lib/File/Compare.pm b/lib/File/Compare.pm index 0b73d7c..bcc996e 100644 --- a/lib/File/Compare.pm +++ b/lib/File/Compare.pm @@ -6,15 +6,19 @@ use warnings; our($VERSION, @ISA, @EXPORT, @EXPORT_OK, $Too_Big); require Exporter; -use Carp; -$VERSION = '1.1003'; +$VERSION = '1.1004'; @ISA = qw(Exporter); @EXPORT = qw(compare); @EXPORT_OK = qw(cmp compare_text); $Too_Big = 1024 * 1024 * 2; +sub croak { + require Carp; + goto &Carp::croak; +} + sub compare { croak("Usage: compare( file1, file2 [, buffersize]) ") unless(@_ == 2 || @_ == 3); diff --git a/lib/File/Copy.pm b/lib/File/Copy.pm index a43a6c6..828473e 100644 --- a/lib/File/Copy.pm +++ b/lib/File/Copy.pm @@ -10,7 +10,6 @@ package File::Copy; use 5.006; use strict; use warnings; -use Carp; use File::Spec; use Config; our(@ISA, @EXPORT, @EXPORT_OK, $VERSION, $Too_Big, $Syscopy_is_copy); @@ -24,7 +23,7 @@ sub mv; # package has not yet been updated to work with Perl 5.004, and so it # would be a Bad Thing for the CPAN module to grab it and replace this # module. Therefore, we set this module's version higher than 2.0. -$VERSION = '2.08'; +$VERSION = '2.08_01'; require Exporter; @ISA = qw(Exporter); @@ -33,6 +32,11 @@ require Exporter; $Too_Big = 1024 * 1024 * 2; +sub croak { + require Carp; + goto &Carp::croak; +} + my $macfiles; if ($^O eq 'MacOS') { $macfiles = eval { require Mac::MoreFiles }; diff --git a/lib/File/Path.pm b/lib/File/Path.pm index f96dc06..202bb48 100644 --- a/lib/File/Path.pm +++ b/lib/File/Path.pm @@ -119,13 +119,12 @@ Charles Bailey > =cut use 5.006; -use Carp; use File::Basename (); use Exporter (); use strict; use warnings; -our $VERSION = "1.07"; +our $VERSION = "1.07_01"; our @ISA = qw( Exporter ); our @EXPORT = qw( mkpath rmtree ); @@ -137,6 +136,16 @@ my $Is_MacOS = $^O eq 'MacOS'; my $force_writeable = ($^O eq 'os2' || $^O eq 'dos' || $^O eq 'MSWin32' || $^O eq 'amigaos' || $^O eq 'MacOS' || $^O eq 'epoc'); +sub carp { + require Carp; + goto &Carp::carp; +} + +sub croak { + require Carp; + goto &Carp::croak; +} + sub mkpath { my($paths, $verbose, $mode) = @_; # $paths -- either a path string or ref to list of paths @@ -165,7 +174,7 @@ sub mkpath { unless (mkdir($path,$mode)) { my $e = $!; # allow for another process to have created it meanwhile - croak "mkdir $path: $e" unless -d $path; + croak ("mkdir $path: $e") unless -d $path; } push(@created, $path); } @@ -183,7 +192,7 @@ sub rmtree { $roots = [$roots] unless ref $roots; } else { - carp "No root path(s) specified\n"; + carp ("No root path(s) specified\n"); return 0; } @@ -203,7 +212,7 @@ sub rmtree { # to recurse in which case we are better than rm -rf for # subtrees with strange permissions chmod($rp | 0700, ($Is_VMS ? VMS::Filespec::fileify($root) : $root)) - or carp "Can't make directory $root read+writeable: $!" + or carp ("Can't make directory $root read+writeable: $!") unless $safe; if (opendir my $d, $root) { @@ -217,7 +226,7 @@ sub rmtree { closedir $d; } else { - carp "Can't read $root: $!"; + carp ("Can't read $root: $!"); @files = (); } @@ -237,14 +246,14 @@ sub rmtree { next; } chmod $rp | 0700, $root - or carp "Can't make directory $root writeable: $!" + or carp ("Can't make directory $root writeable: $!") if $force_writeable; print "rmdir $root\n" if $verbose; if (rmdir $root) { ++$count; } else { - carp "Can't remove directory $root: $!"; + carp ("Can't remove directory $root: $!"); chmod($rp, ($Is_VMS ? VMS::Filespec::fileify($root) : $root)) or carp("and can't restore permissions to " . sprintf("0%o",$rp) . "\n"); @@ -259,13 +268,13 @@ sub rmtree { next; } chmod $rp | 0600, $root - or carp "Can't make file $root writeable: $!" + or carp ("Can't make file $root writeable: $!") if $force_writeable; print "unlink $root\n" if $verbose; # delete all versions under VMS for (;;) { unless (unlink $root) { - carp "Can't unlink file $root: $!"; + carp ("Can't unlink file $root: $!"); if ($force_writeable) { chmod $rp, $root or carp("and can't restore permissions to " diff --git a/lib/SelfLoader.pm b/lib/SelfLoader.pm index 40c92db..87587c3 100644 --- a/lib/SelfLoader.pm +++ b/lib/SelfLoader.pm @@ -1,9 +1,8 @@ package SelfLoader; -# use Carp; require Exporter; @ISA = qw(Exporter); @EXPORT = qw(AUTOLOAD); -$VERSION = "1.0904"; +$VERSION = "1.0905"; sub Version {$VERSION} $DEBUG = 0; @@ -18,6 +17,7 @@ our $one_attr = qr{ (?> (?! \d) \w+ (?:$nested)? ) (?:\s*\:\s*|\s+(?!\:)) }x; our $attr_list = qr{ \s* : \s* (?: $one_attr )* }x; sub croak { require Carp; goto &Carp::croak } +sub carp { require Carp; goto &Carp::carp } AUTOLOAD { print STDERR "SelfLoader::AUTOLOAD for $AUTOLOAD\n" if $DEBUG; @@ -115,7 +115,7 @@ sub _load_stubs { sub _add_to_cache { my($self,$fullname,$pack,$lines, $protoype) = @_; return () unless $fullname; - (require Carp), Carp::carp("Redefining sub $fullname") + carp("Redefining sub $fullname") if exists $Cache{$fullname}; $Cache{$fullname} = join('', "package $pack; ",@$lines); print STDERR "SelfLoader cached $fullname: $Cache{$fullname}" if $DEBUG; diff --git a/lib/charnames.pm b/lib/charnames.pm index f895d37..b69cccc 100644 --- a/lib/charnames.pm +++ b/lib/charnames.pm @@ -1,9 +1,8 @@ package charnames; use strict; use warnings; -use Carp; use File::Spec; -our $VERSION = '1.04'; +our $VERSION = '1.04_1'; use bytes (); # for $bytes::hint_bits $charnames::hint_bits = 0x20000; # HINT_LOCALIZE_HH @@ -44,6 +43,16 @@ my %alias3 = ( ); my $txt; +sub croak +{ + require Carp; goto &Carp::croak; +} # croak + +sub carp +{ + require Carp; goto &Carp::carp; +} # carp + sub alias (@) { @_ or return %alias3; diff --git a/lib/open.pm b/lib/open.pm index 4515899..3565762 100644 --- a/lib/open.pm +++ b/lib/open.pm @@ -1,9 +1,8 @@ package open; use warnings; -use Carp; $open::hint_bits = 0x20000; # HINT_LOCALIZE_HH -our $VERSION = '1.04'; +our $VERSION = '1.04_01'; require 5.008001; # for PerlIO::get_layers() @@ -14,6 +13,10 @@ sub _get_encname { return; } +sub croak { + require Carp; goto &Carp::croak; +} + sub _drop_oldenc { # If by the time we arrive here there already is at the top of the # perlio layer stack an encoding identical to what we would like @@ -39,13 +42,11 @@ sub _drop_oldenc { require Encode; my ($loname, $lcname) = _get_encname($old[-2]); unless (defined $lcname) { # Should we trust get_layers()? - require Carp; - Carp::croak("open: Unknown encoding '$loname'"); + croak("open: Unknown encoding '$loname'"); } my ($voname, $vcname) = _get_encname($new[-1]); unless (defined $vcname) { - require Carp; - Carp::croak("open: Unknown encoding '$voname'"); + croak("open: Unknown encoding '$voname'"); } if ($lcname eq $vcname) { binmode($h, ":pop"); # utf8 is part of the encoding layer