]> git.vpit.fr Git - perl/modules/B-RecDeparse.git/blobdiff - lib/B/RecDeparse.pm
Only load Carp.pm when needed
[perl/modules/B-RecDeparse.git] / lib / B / RecDeparse.pm
index 1a2b4b4857bae51918e89ea564390d9ef0e30987..2aac9bb42e16ebacd1d05aa5aa6e7a5e2489ae92 100644 (file)
@@ -5,7 +5,6 @@ use 5.008;
 use strict;
 use warnings;
 
-use Carp qw/croak/;
 use Config;
 
 use base qw/B::Deparse/;
@@ -16,11 +15,11 @@ B::RecDeparse - Deparse recursively into subroutines.
 
 =head1 VERSION
 
-Version 0.03
+Version 0.04
 
 =cut
 
-our $VERSION = '0.03';
+our $VERSION = '0.04';
 
 =head1 SYNOPSIS
 
@@ -34,7 +33,7 @@ our $VERSION = '0.03';
 
 =head1 DESCRIPTION
 
-This module extends L<B::Deparse> by making you recursively replace subroutine calls encountered when deparsing.
+This module extends L<B::Deparse> by making it recursively replace subroutine calls encountered when deparsing.
 
 Please refer to L<B::Deparse> documentation for what to do and how to do it. Besides the constructor syntax, everything should work the same for the two modules.
 
@@ -50,12 +49,17 @@ use constant {
  # p31268 made pp_entersub call single_delim
  FOOL_SINGLE_DELIM =>
      ($^V ge v5.9.5)
+  || ($^V lt v5.9.0 and $^V ge v5.8.9)
   || ($Config{perl_patchlevel} && $Config{perl_patchlevel} >= 31268)
 };
 
 sub _parse_args {
- croak 'Optional arguments must be passed as key/value pairs' if @_ % 2;
+ if (@_ % 2) {
+  require Carp;
+  Carp::croak('Optional arguments must be passed as key/value pairs');
+ }
  my %args = @_;
+
  my $deparse = $args{deparse};
  if (defined $deparse) {
   if (!ref $deparse) {
@@ -66,9 +70,11 @@ sub _parse_args {
  } else {
   $deparse = [ ];
  }
- my $level   = $args{level};
- $level      = -1  unless defined $level;
- $level      = int $level;
+
+ my $level = $args{level};
+ $level    = -1  unless defined $level;
+ $level    = int $level;
+
  return $deparse, $level;
 }
 
@@ -112,7 +118,7 @@ if (FOOL_SINGLE_DELIM) {
  no warnings 'redefine';
  *B::Deparse::single_delim = sub {
   my $body = $_[2];
-  if ($body =~ s/^$key//) {
+  if ((caller 1)[0] eq __PACKAGE__ and $body =~ s/^$key//) {
    return $body;
   } else {
    $oldsd->(@_);
@@ -168,7 +174,7 @@ sub pp_gv {
 
 =head2 C<pp_gv>
 
-Functions and methods from L<B::Deparse> overriden by this module. Never call them directly.
+Functions and methods from L<B::Deparse> reimplemented by this module. Never call them directly.
 
 Otherwise, L<B::RecDeparse> inherits all methods from L<B::Deparse>.
 
@@ -184,7 +190,7 @@ L<Carp> (standard since perl 5), L<Config> (since perl 5.00307) and L<B::Deparse
 
 Vincent Pit, C<< <perl at profvince.com> >>, L<http://www.profvince.com>.
 
-You can contact me by mail or on #perl @ FreeNode (vincent or Prof_Vince).
+You can contact me by mail or on C<irc.perl.org> (vincent).
 
 =head1 BUGS