Re: arrays as pl/perl input arguments [PATCH]
Martijn van Oosterhout <kleptog@svana.org>
From: Martijn van Oosterhout <kleptog@svana.org>
To: Alex Hunsaker <badalex@gmail.com>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, "David E. Wheeler" <david@kineticode.com>, Alexey Klyukin <alexk@commandprompt.com>, pgsql-hackers@postgresql.org, Andrew Dunstan <andrew@dunslane.net>
Date: 2011-01-13T08:06:45Z
Lists: pgsql-hackers
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.
I was thinking however, if the parameters if the function have names
you can use, then you can make it work. $_[0] would still go the old
way, but the named parameters could be the array.
====================== cut ======================
#!/usr/bin/perl -w
use strict;
no strict 'vars';
package MyClass;
sub TIESCALAR {
my $class = shift;
my $self = shift;
return bless $self, $class;
}
sub FETCH {
my $self = shift;
return join(",", @$self);
}
my @a=(1,2);
tie $a, "MyClass", \@a;
print "\$a='$a'\n";
print "\$a[0]='$a[0]'\n";
--
Martijn van Oosterhout <kleptog@svana.org> http://svana.org/kleptog/
> Patriotism is when love of your own people comes first; nationalism,
> when hate for people other than your own comes first.
> - Charles de Gaulle