Stop leaking extra methods into the inheritance chain
[p5sagit/Class-Accessor-Grouped.git] / lib / Class / Accessor / Grouped.pm
index ca61579..3096b21 100644 (file)
@@ -71,17 +71,13 @@ BEGIN {
     $0 =~ m|^ x?t / .+ \.t $|x
   ) ? 1 : 0 );
 
-  *Class::Accessor::Grouped::perlstring = ($] < '5.008')
-    ? do {
-      require Data::Dumper;
-      my $d = Data::Dumper->new([])->Indent(0)->Purity(0)->Pad('')->Useqq(1)->Terse(1)->Freezer('')->Toaster('');
-      sub { $d->Values([shift])->Dump };
-    }
-    : do {
-      require B;
-      \&B::perlstring;
-    }
-  ;
+  require B;
+  # a perl 5.6 kludge
+  unless (B->can('perlstring')) {
+    require Data::Dumper;
+    my $d = Data::Dumper->new([])->Indent(0)->Purity(0)->Pad('')->Useqq(1)->Terse(1)->Freezer('')->Toaster('');
+    *B::perlstring = sub { $d->Values([shift])->Dump };
+  }
 }
 
 # Yes this method is undocumented
@@ -109,7 +105,7 @@ sub _mk_group_accessors {
       if ($name =~ /\0/) {
         Carp::croak(sprintf
           "Illegal accessor name %s - nulls should never appear in stash keys",
-          perlstring($name),
+          B::perlstring($name),
         );
       }
       elsif (! $ENV{CAG_ILLEGAL_ACCESSOR_NAME_OK} ) {
@@ -707,7 +703,7 @@ my $maker_templates = {
     cxsa_call => 'accessors',
     pp_generator => sub {
       # my ($group, $fieldname) = @_;
-      my $quoted_fieldname = perlstring($_[1]);
+      my $quoted_fieldname = B::perlstring($_[1]);
       sprintf <<'EOS', ($_[0], $quoted_fieldname) x 2;
 
 @_ > 1
@@ -721,7 +717,7 @@ EOS
     cxsa_call => 'getters',
     pp_generator => sub {
       # my ($group, $fieldname) = @_;
-      my $quoted_fieldname = perlstring($_[1]);
+      my $quoted_fieldname = B::perlstring($_[1]);
       sprintf  <<'EOS', $_[0], $quoted_fieldname;
 
 @_ > 1
@@ -741,7 +737,7 @@ EOS
     cxsa_call => 'setters',
     pp_generator => sub {
       # my ($group, $fieldname) = @_;
-      my $quoted_fieldname = perlstring($_[1]);
+      my $quoted_fieldname = B::perlstring($_[1]);
       sprintf  <<'EOS', $_[0], $quoted_fieldname;
 
 @_ > 1