Perl: hashes in list syntax and arrays in hash syntax
Today I learned that Perl list and hash syntax can be used interchangeably. If you use list syntax but assign to a hash Perl will convert the pairs in to hash key/values.
my @array = ("one", "two", "three", "four"); # Create a standard array
my %hash = ("apple", "red", "banana", "yellow"); # Create a hash using list syntax
my %hash = ("apple" => "red", "banana" => "yellow"); # Create a standard hash
my @array = ("one" => "two", "three" => "four"); # Create an array using hash syntax
This is also why qw()
is able to create hashes. Perl automagically converts lists to hashes if they're being assigned to a hash (and they have an even number of elements):
my %turtles = qw(Donatello Purple Raphael Red Michelangelo Orange Leonardo Blue);