perlhashinterpolation

Why doesn't Perl support interpolation of hashes in double quotes?


#!/usr/bin/perl
use warnings;

my %hash=("no1"=>1, 
        "no2"=>2,
      );

print %hash; #Prints no11no22
print "%hash"; #Prints %hash

Why doesn't Perl support interpolation of a hash within double quotes? It supports interpolation for scalars ($), arrays (@) then why not for hashes (%)?


Solution

  • How should a hash stringify? Scalars are obvious and arrays too. But what should a hash be? How useful will such a stringification be? Is it more or less useful than being able to use a % character unescaped in an interpolating string? Is it worth the amount of work it will take to fix all of the code that uses % in interpolated strings today?

    If you can come up with good answers to these questions, then I am sure P5P would be willing to listen to them.