This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Don't deparse $^H{v_string}, which is automatically set by the
authorNicholas Clark <nick@ccl4.org>
Tue, 9 Oct 2007 11:57:16 +0000 (11:57 +0000)
committerNicholas Clark <nick@ccl4.org>
Tue, 9 Oct 2007 11:57:16 +0000 (11:57 +0000)
internals. Doing so confuses modules that test the round-tripping of
various code.

p4raw-id: //depot/perl@32076

ext/B/B/Deparse.pm

index b0b3175..77ae15f 100644 (file)
@@ -1451,17 +1451,25 @@ sub declare_hints {
     return $decls;
 }
 
     return $decls;
 }
 
+# Internal implementation hints that the core sets automatically, so don't need
+# (or want) to be passed back to the user
+my %ignored_hints = (
+    'open<' => 1,
+    'open>' => 1,
+    'v_string' => 1,
+    );
+
 sub declare_hinthash {
     my ($from, $to, $indent) = @_;
     my @decls;
     for my $key (keys %$to) {
 sub declare_hinthash {
     my ($from, $to, $indent) = @_;
     my @decls;
     for my $key (keys %$to) {
-       next if $key =~ /^open[<>]$/;
+       next if $ignored_hints{$key};
        if (!defined $from->{$key} or $from->{$key} ne $to->{$key}) {
            push @decls, qq(\$^H{'$key'} = q($to->{$key}););
        }
     }
     for my $key (keys %$from) {
        if (!defined $from->{$key} or $from->{$key} ne $to->{$key}) {
            push @decls, qq(\$^H{'$key'} = q($to->{$key}););
        }
     }
     for my $key (keys %$from) {
-       next if $key =~ /^open[<>]$/;
+       next if $ignored_hints{$key};
        if (!exists $to->{$key}) {
            push @decls, qq(delete \$^H{'$key'};);
        }
        if (!exists $to->{$key}) {
            push @decls, qq(delete \$^H{'$key'};);
        }