From: Christopher Yee Mon <[EMAIL PROTECTED]> > I have a bit of Perl homework where we got a code sample. I can see what > the code sample is doing except for two little bits > > There's a part that has $row->[$i] and a part that has @$row . What do > these two parts mean?
$row->[$i] is the $i-th element of the array referenced by $row and @$row is the array referenced by $row. Another way to write the first thing would be ${$row}[$i]. > The code sample turns csv into fixed width so it reads each line of the > file into an array @rows. Then in a for loop > > for $row (@rows) { That should be for my $row (@rows) { You should put use strict; on top of your scripts and declare all variables. And you should declare them for the smallest scope possible. In the case of $row, just for the loop. > There's another for loop > > for $row (@rows) { > ~ for ($i = 0; $i < @$row; i++) { > ~ $w = length $row->[$i] > ~ ... > > I'm assuming that the $row is itself another array It's a reference to one > or can be treated as one and @$row can give you a number of the > elements in it No, the @$row is the array referenced by $row, but an array, in scalar context, returns its length. So just like my $len = @array; sets $len to the number of elements in @array, my $len = @$arrayref; sets it to the number of elements in the array referenced by $arrayref. The concept of context takes some getting used to, but it's one of the best inventions of Perl. > and $row->[$i] > is some sort of deferencing mechanism. Right. > The perlop page seemed a bit > cryptic to me as to what the arrow operator does exactly and I could > search for the use of @ in that context. See perlref and perldsc HTH, Jenda ===== [EMAIL PROTECTED] === http://Jenda.Krynicky.cz ===== When it comes to wine, women and song, wizards are allowed to get drunk and croon as much as they like. -- Terry Pratchett in Sourcery -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/