in reply to \($a, $b, $c) eq (\$a, \$b, \$c), is \$a, $b, $c eq \$a, \$b, \$c?
Let's have a look at the '\', '[]' and '()' constructs:
- [$a, $b, $c] is a reference to an array with three scalar elements.
- \[$a, $b, $c] is a reference to a scalar, which againg is a reference to an array with three scalar elements.
- [\$a, \$b, \$c] is a reference to an array with three scalars. Each of theese three scalars is a reference to the real scalar.
- ($a, $b, $c) is a list of three scalar elements. It is not an array, but a list.
- \($a, $b, $c) is a list of three scalar elemnts. Each of theese three elements is a reference to the real scalar (that is your value "foo", "bar" and "baz")
- (\$a, \$b, \$c) is excatly the same as \($a, $b, $c). The '\' operator will distribute over the list.
So then, an easier way to write [\$a, \$b, \$c] would be [ \($a, $b, $c) ]. But still, this will not fix your example - I hope you can see the error in the example, but let's fix it:
Autark.$a = "foo"; $b = "bar"; $c = "baz"; @list = \($a, $b, $c); foreach(@list) { print $$_ . "\n"; }
In Section
Seekers of Perl Wisdom