tied - hash question at perlmonks.org
Scott Penrose
scottp at dd.com.au
Wed Oct 1 20:27:48 CDT 2003
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On Thursday, Oct 2, 2003, at 10:59 Australia/Melbourne, peter renshaw
wrote:
> found a small discussion on tied hashs on perlmonks.org -
> http://www.perlmonks.org/index.pl?node_id=295518
>
> regs PR
Interesting discussion. I agree with the argument that you should be
using OO.
But... as I discussed a few weeks ago, there are some times reasons to
use a tied HASH
* 3rd party code demands it (no access to make changes)
* Existing code demands it (too damn hard to make changes)
* Aesthetics demands it
The last is interesting, but if you want to provide a bit of data to a
user in say Template Toolkit, where they can do...
my data for key fred = [% data.fred %]
now setting it to george. [% data.fred = 'george' %]
now my data for fred = [% data.fred %]
Then for simplicity to the user (whom is generally not a hard core perl
programmer) is a little easier then...
my data for key fred = [% data.fred %]
now setting it to george. [% data.fred.set('george') %]
There are even other alternatives - but for the purpose of handing on
code to web developers I like the hash idea. I have also often used a
hash of subs in template toolkit, so that users can have a hash that
looks a little like this in perl...
my %data = (
'fred' => sub { $this->_callback_fred(@_); },
'george' => sub { $this->_callback_george(@_); },
);
Each callback returns either an array or a hash, and then in TT land
users can simply do things like this...
[% FOREACH row = data.fred %]
ID [% row.id %] = [% row.name %]
[% END %]
or even....
George First Name is [% data.george.first_name %]
The fact that data is a hash of subs that return a hash or array ref,
vs a predefined data structure is then completely hidden from the
template developer.
The reason I did this was to do it as a callback instead, so that I
only had to generate the data (big database calls) if this particular
template from this particular developer required it in this
circumstance :-)
Scott
- --
Scott Penrose
VP in charge of Pancakes
http://linux.dd.com.au/
scottp at dd.com.au
Dismaimer: If you receive this email in error - please eat it
immediately to prevent it from falling into the wrong hands.
Please do not send me Word or PowerPoint attachments.
See http://www.fsf.org/philosophy/no-word-attachments.html
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.6 (Darwin)
Comment: For info see http://www.gnupg.org
iD8DBQE/e38XDCFCcmAm26YRAjGIAJ0SP3NS/zRs7LH6PqzZvOtjpGlY2wCfdGoX
o4un8K3AiK5O4IMP9/sSH80=
=ujOe
-----END PGP SIGNATURE-----
More information about the Melbourne-pm
mailing list