#!/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 (%)?
This page shows how variable interpolation works in Perl. Interpolation, meaning "introducing or inserting something", is the name given to replacing a variable with the value of that variable.
If you put a back-slash \ in a double-quoted string, Perl will think you want to escape the next character and do its magic.
Interpolation in Perl refers to the process where the respective values replace the variable names. It is commonly used inside double-quoted strings.
To quote Nathan Torkington: "The big problem is that % is heavily used in double-quoted strings with printf." More information is here.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With