Cool!
I'll try it out.
Thanks, (and to other gentleman who responded)
-TK (asking a question about Tk :)
>
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> * Timothy Kohl <tkohl at it.bu.edu> [2003-08-07 08:17]:
> > I am trying to set up an associative array
> > where the values are method calls (specifically
> > widget creation calls) for Tk.
>
> You want a dispatch table, with the keys pointing to subroutine
> references.
>
> %Valid = (
> hostname => sub {
> my $obj = shift;
> $obj->Entry(width => 30,
> background => 'darkgreen',
> -textvariable => \$curval{'hostname'},
> );
> },
> # and others
> );
>
> You would then invoke them as something like:
>
> my $sub = $Valid{'hostname'};
> $prop{'hostname'} = $sub->($rightframe)->pack(side => 'right');
>
> This creates references to anonymous subroutines as the values of %Valid
> that are expecting a Tk object (a Frame, in this case). The subrefs
> take the object as an argument (that's the $sub->($rightframe) syntax,
> which will need to be spelled $&sub($rightframe) if you are using an
> pre-5.005 Perl).
>
> In the 'hostname' example, this returns whatever $rightframe->Entry()
> returns, which you can then call pack on (presumably).
>
> You could even make it a little more extensible like this:
>
> %Valid = (
> hostname => sub {
> my $obj = shift;
> $obj->Entry(width => 30,
> background => 'darkgreen',
> -textvariable => \$curval{'hostname'},
> @_,
> );
> },
> # and others
> );
>
> The addition of @_ in the call to $obj->Entry means you can pass extra
> arguments to it:
>
> $prop{'hostname'} =
> $sub->($rightframe, other => 'arg')->pack(side => 'right');
>
> And other => 'arg' will be passed to Entry as well (sorry about the
> useless example, I don't have Tk installed to find a real argument).
>
> (darren)
>
> - --
> The higher we soar the smaller we appear to those who cannot fly.
> -- Friedrich Nietzsche
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.2.2 (GNU/Linux)
> Comment: This message is digitally signed and can be verified for authenticity.
>
> iD8DBQE/Mk2ozsinjrVhZaoRAgC8AJ9ltTbz6yN4kob/Co+2nmDMNmGK+wCfaYIv
> kxof0vFBrltFF67PWLxg8zI=
> =6U5a
> -----END PGP SIGNATURE-----
> _______________________________________________
> Boston-pm mailing list
> [EMAIL PROTECTED]
> http://mail.pm.org/mailman/listinfo/boston-pm
>
_______________________________________________
Boston-pm mailing list
[EMAIL PROTECTED]
http://mail.pm.org/mailman/listinfo/boston-pm