]> git.vpit.fr Git - perl/modules/B-RecDeparse.git/blobdiff - lib/B/RecDeparse.pm
Also fool B::Deparse::single_delim when patchlevel >= 31268. Make Config a dependency
[perl/modules/B-RecDeparse.git] / lib / B / RecDeparse.pm
index fb712d91d660f8405d7a9f728dc45d051bfbb39d..da731d951e4a8e602565410e22ad334a75886bc4 100644 (file)
@@ -4,6 +4,7 @@ use strict;
 use warnings;
 
 use Carp qw/croak/;
+use Config;
 
 use base qw/B::Deparse/;
 
@@ -43,6 +44,13 @@ The L<B::RecDeparse> object constructor. You can specify the underlying L<B::Dep
 
 =cut
 
+use constant {
+ # p31268 made pp_entersub call single_delim
+ FOOL_SINGLE_DELIM =>
+     ($^V ge v5.9.5)
+  || ($Config{perl_patchlevel} && $Config{perl_patchlevel} >= 31268)
+};
+
 sub _parse_args {
  croak 'Optional arguments must be passed as key/value pairs' if @_ % 2;
  my %args = @_;
@@ -97,8 +105,7 @@ sub init {
 
 my $key = $; . __PACKAGE__ . $;;
 
-# p31268 made pp_entersub call single_delim
-if ($^V ge v5.9.5) {
+if (FOOL_SINGLE_DELIM) {
  my $oldsd = *B::Deparse::single_delim{CODE};
  no warnings 'redefine';
  *B::Deparse::single_delim = sub {
@@ -138,10 +145,10 @@ sub pp_gv {
   ++$self->{brd_cur};
   $body = 'sub ' . $self->indent($self->deparse_sub($gv->CV));
   --$self->{brd_cur};
-  if ($^V lt v5.9.5) {
-   $body .= '->';
-  } else {
+  if (FOOL_SINGLE_DELIM) {
    $body = $key . $body;
+  } else {
+   $body .= '->';
   }
  }
  return $body;
@@ -167,7 +174,7 @@ An object-oriented module shouldn't export any function, and so does this one.
 
 =head1 DEPENDENCIES
 
-L<Carp> (standard since perl 5), L<B::Deparse> (since perl 5.005).
+L<Carp> (standard since perl 5), L<Config> (since perl 5.00307) and L<B::Deparse> (since perl 5.005).
 
 =head1 AUTHOR