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/


Reply via email to