Re: arrays as pl/perl input arguments [PATCH] - Mailing list pgsql-hackers

From Alex Hunsaker
Subject Re: arrays as pl/perl input arguments [PATCH]
Date
Msg-id AANLkTinrQTBXnAxWAzb-+OJNtOa0RcqrxeszEMLDYbWg@mail.gmail.com
Whole thread Raw
In response to Re: arrays as pl/perl input arguments [PATCH]  (Martijn van Oosterhout <kleptog@svana.org>)
List pgsql-hackers
On Thu, Jan 13, 2011 at 01:06, Martijn van Oosterhout <kleptog@svana.org> wrote:
> On Thu, Jan 13, 2011 at 12:06:33AM -0700, Alex Hunsaker wrote:
>> > I had supposed that it would be possible to do the string conversion
>> > lazily, ie, only if the string value was actually demanded.
>>
>> Yep, In-fact if we wanted we could even die (or throw an exception in
>> other language speak :) ) when the string value is demanded.
>
> I played with this a little and it is fairly easy to make a variable
> such that $a is the string representation and $a[0] the first value of
> the array. The problem is that you can't pass such a variable into a
> subroutine.

[ snip ]
> my @a=(1,2);
>
> tie $a, "MyClass", \@a;
>
> print "\$a='$a'\n";
> print "\$a[0]='$a[0]'\n";


Erm... the reason you can't seem to pass it to any subroutines is its
actually 2 variables: $a, @a.
When you print "$a\n"; you are using the tied variable that uses @a;
And when you print "$a[0]\n"; you are accessing the array directly.
I think you just had an unfortunate variable name, otherwise strict
would have complained appropriately. :)


pgsql-hackers by date:

Previous
From: Hitoshi Harada
Date:
Subject: Re: psql crashes on encoding mismatch
Next
From: Bruce Momjian
Date:
Subject: Re: libpq documentation cleanups (repost 3)