Date: 11 Sep 2001 02:46:22 GMT From: damian@qimr.edu.au (Damian James) Subject: Re: references, slices, voodoo Message-Id: Shmuel (Seymour J.) Metz chose Mon, 10 Sep 2001 21:35:55 -0400 to say this: >In , on 09/03/2001 > at 03:12 PM, Bart Lateur said: > >>As for the array slice: > >> @ary[2, 4] = @ary[4, 2]; > >>is functionally equivalent to > >> (\$ary[2], \$ary[4]) = (\$ary[4], \$ary[2]); > >That doesn't explain the @ and \$ back-to-back in > @\$array[\$i,\$j] = @\$array[\$j,\$i] unless \$i == \$j; # ??? > >\$array(\$i,\$j) is a slice of @array, but what is @\$array? > No, @array[\$i,\$j] is a slice -- see the perldata manpage. @\$array is another kind of beast -- equivalent to @{\$array}, where the @{} implies that \$array is a reference to an array. Not very helpful unless \$array is in fact a reference to an array. In this case @\$array[\$i,\$j] is equivalent to: @{\$array}[\$i, \$j] which is equivalent to: ( \$array->[\$i], \$array->[\$j] ) or ( \${\$array}[\$i], \${\$array}[\$j] ) or ( \$\$array[\$i], \$\$array[\$j] ) See perlref, perlreftut and perldsc. Cheers, Damian -- @:=grep!(m!\$/|#!..\$|),split//,;@;=0..\$#:;while(\$:=@;){\$;=rand \$:--,@;[\$;,\$:]=@;[\$:,\$;]while\$:;push@|,shift@;if\$;[0]==@|;select\$,, \$,,\$,,1/80;print qq x\bxx((@;+@|)*\$|++),@:[@|,@;],!@;&&\$/} __END__ Just another Perl Hacker, # damian@qimr.edu.au