http://www.perlmonks.org?node_id=1036725


in reply to Re: scoping problems
in thread scoping problems

OK. Thanks for pointing out the $saba and @saba not being related. It is probably bug out of convenience - I seem to have used an array in scalar context easily getting an array length but it seems that a shorthand like this cant travel well around different loops etc.? I did put

for(my $i=0;$i<@saba;++$i) {my $sabasize=scalar(@saba);

on the top of the for loop and it seems to be almost getting somewhere from there. :D so it seems to be that you led me to a better path here.

Replies are listed 'Best First'.
Re^3: scoping problems
by AnomalousMonk (Archbishop) on Jun 03, 2013 at 14:47 UTC

    Further to hdb's reply:

    ... it seems that a shorthand like [evaluating an array in scalar context] cant travel well around different loops etc.?

    It travels perfectly well. hdb and others have already pointed out that  @saba and  $saba are quite different things and are in no way inherently related.

    What may be confusing you is the fact that an element of the  @array array is accessed by the syntax  $array[n] (note the  $ sigil). The logic of this, determined by Larry at the Dawn of Time (Perl version 1.0), is that the elements of arrays (and also of hashes – associative arrays) are always and only scalars. But you always have to distinguish between an array, which contains (like a hash) a certain number of elements and thus has, among other properties, a size, and an element of an array.

      The logic of this, determined by Larry at the Dawn of Time (Perl version 1.0), is that the elements of arrays (and also of hashes – associative arrays) are always and only scalars.

      Interestingly, this logic (which sounds perfectly sane to me) has been abandoned in Perl 6. I don't understand why.

      -- FloydATC

      Time flies when you don't know what you're doing

Re^3: scoping problems
by hdb (Monsignor) on Jun 03, 2013 at 11:33 UTC

    If you use @saba, not $saba, in scalar context, you get the arraysize indeed. This is why your $i<@saba works.