Hello builat,
I upvoted this, because it raises an interesting issue, but I think your conclusion is incorrect. Consider:
16:36 >perl -wE "my %h = (Fred => 'Wilma'); my ($k, $v) = each %h; say
+ length $k;"
4
16:36 >perl -wE "my %h = (qq['Fred'] => 'Wilma'); my ($k, $v) = each %
+h; say length $k;"
6
16:36 >perl -wE "my %h = ('Fred' => 'Wilma'); my ($k, $v) = each %h; s
+ay length $k;"
4
16:37 >
According to the documentation:
The => operator is a synonym for the comma except that it causes a word on its left to be interpreted as a string if it begins with a letter or underscore and is composed only of letters, digits and underscores....
Otherwise, the => operator behaves exactly as the comma operator or list argument separator, according to context.
Since the string 'all' contains single quote characters, it does not satisfy the criterion “begins with a letter or underscore and is composed only of letters, digits and underscores.” So, it is not subject to the fat comma’s “special quoting behaviour”, but is treated as a normal string expression; that is, the quotation characters function as operators (like q//) and do not make it into the final hash key string.
Hope that helps,
| [reply] [d/l] [select] |
I have try it minute ago. You absolutely right. Thank you!
| [reply] |