On Tue, 28 Oct 2003 20:40:07 -0800, Richard Heintze wrote:
> I have an array stored in an object and I trying to
> compute the length of the array. This seemed to work
> initially:
>
> my $nColumns = [EMAIL PROTECTED]>{component_titles}}}+1;
$#array gives to the index of the _last_ element. If you want the length
of the array (ie. the _number_ of elements), you should evaluate the array
in a scalar context;
my $length = @array; # or @{ $array } for array references
> Something changed, I don't know what, and perl started
> dying on the above statement with no error message or
> explanation.
Really? Did you include strict, warnings and diagnostics?
#!/usr/bin/perl
#
use strict;
use warnings;
use diagnostics;
Always use these (at least strict and warnings) when developing Perl code.
> I had to resort to this technique:
>
> my @ComponentTitles = @{$me->{component_titles}};
> my $nColumns = $#ComponentTitles+1 ;
Could have been written as:
my $nColumns = @{ $me->{component_titles} };
> I don't really do anything to create to create this
> array -- I just start storing elements like this:
>
> $me->{component_titles}[0] = "xyz";
You could always initialise an array reference;
$me->{component_titles} = [];
And then you could assign values to it:
$me->{component_titles}->[0] = 'xyz';
Are you sure you want to assign data directly onto an element index? Have
you considered push()'ing data onto the array?
> I tried to create a second array and store it by
> reference like this:
>
> my $a = [];
> $me->{a} = \$a;
$a is _already_ an array reference. No need to make a reference of a
reference. :-)
my @array = ();
my $arrayref = [EMAIL PROTECTED];
--
Tore Aursand <[EMAIL PROTECTED]>
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]