You may leave of the braces if the content of the block is a simple variable. Perhaps you find that obfuscated, but that's actually the same rule as the first (optional) argument of print. The file handle is passed as a block, and taken as the result, but if the block is a simple variable, you may leave off the braces. If that isn't obfuscated, why is the code I presented obfuscated? Or is it that you aren't used to it, and call anything you aren't used to obfuscated?${$hash_ref}{key} = ${$array_ref}[1];
If you want to take a slice of a hash or an array, and all you have is a reference to it, how do you do it without being "obfuscated"? I write it as:
which follows naturally from accessing a single value:@$hash_ref{$key1, $key2, $key3};
But$$hash_ref{$key1};
doesn't work and nor does@hash_ref->{$key1, $key2, $key3};
$hash_ref->{$key1, $key2, $key3};
And no, my code isn't littered with
&{do {... sub {...}}};
In reply to Re^3: Dereferencing code refs with & vs. ->()
by Anonymous Monk
in thread Dereferencing code refs with & vs. ->()
by doran
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |