From: | Alex Hunsaker <badalex(at)gmail(dot)com> |
---|---|
To: | Martijn van Oosterhout <kleptog(at)svana(dot)org> |
Cc: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, "David E(dot) Wheeler" <david(at)kineticode(dot)com>, Alexey Klyukin <alexk(at)commandprompt(dot)com>, pgsql-hackers(at)postgresql(dot)org, Andrew Dunstan <andrew(at)dunslane(dot)net> |
Subject: | Re: arrays as pl/perl input arguments [PATCH] |
Date: | 2011-01-13 16:55:44 |
Message-ID: | AANLkTinrQTBXnAxWAzb-+OJNtOa0RcqrxeszEMLDYbWg@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Thu, Jan 13, 2011 at 01:06, Martijn van Oosterhout <kleptog(at)svana(dot)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", \(at)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. :)
From | Date | Subject | |
---|---|---|---|
Next Message | Bruce Momjian | 2011-01-13 17:09:09 | Re: libpq documentation cleanups (repost 3) |
Previous Message | Hitoshi Harada | 2011-01-13 16:35:45 | Re: psql crashes on encoding mismatch |