A Perl Chicken-and-egg problem
Paul King
sciguy-Ja3L+HSX0kI at public.gmane.org
Sat Jun 21 18:25:35 UTC 2008
Hello
I dabble in Perl occasionally, and when I have to use modules or objects
in Perl, it is a dusty corner for me where the documentation is normally
unhelpful.
I need to use an array which is in one of these modules -- the module
name is not important -- where the actual array is pointed to by the
variable it passes to me. For example,
my @A = myobj::files::list(params); // same declaration as in the docs
foreach $x (@A) {
print "$x\n";
}
yields nothing except a pointer to an array -- something like
ARRAY(#A1B2C3D4)
in the output. This causes me to have to alter my code to do this:
my @A = myobj::files::list(params);
foreach $x (@A) {
for ($i = 0; $i < $max; $i++) {
print "$x->[$i]\n";
}
}
This, I think, gives the output to the array pointed to by $x (I say "I
think", since my copy of O'Reilly's Programming Perl 2e says that you
dereference an array using "=>" not "->"). And the reality is worse,
since the module I am using actually returns a pointer to a
2-dimensional array:
my @A = myobj::files::list(params);
foreach $x (@A) {
for ($i = 0; $i < 16; $i++) {
for $j = 0; $j < 16; $j++) {
print "$x->[$i][$j]\n";
}
}
}
This kind of works. I get the output I expect, except for one thing. I
don't know the array size, so I am hard-coding the upper limit of the
loops. $#x to find the size doesn't work, since (1) $x merely points to
an array, and (2) the array is two dimensional. Any suggestions?
Paul King
--
The Toronto Linux Users Group. Meetings: http://gtalug.org/
TLUG requests: Linux topics, No HTML, wrap text below 80 columns
How to UNSUBSCRIBE: http://gtalug.org/wiki/Mailing_lists
More information about the Legacy
mailing list