Rechercher une page de manuel
Zoidberg::DispatchTable.3pm
Langue: en
Version: 2006-02-19 (debian - 07/07/09)
Section: 3 (Bibliothèques de fonctions)
NAME
Zoidberg::DispatchTable - Class to tie dispatch tablesSYNOPSIS
use Zoidberg::DispatchTable;
my $table = Zoidberg::DispatchTable->new( $self, { cd => '->Commands->cd' } );
# The same as $self->parent->{objects}{Commands}->cd('..') if # a module can('parent'), else the same as $self->Commands->cd('..') $$table{cd}->('..');
$$table{ls} = q{ls('-al')}
# The same as $self->ls('-al', '/data') $$table{ls}->('/data');
DESCRIPTION
This module provides a tie interface for converting config strings to CODE references. It takes an object references ($self) as starting point for resolving subroutines. If the object has a method "parent()" the refrence returned by this method is used as the root for resolving subroutines, else the object itself is used as root. The root is expected to contain a hash "{objects}" (possibly of the class Zoidberg::PluginHash) with references to ``child'' objects.Strings are converted to CODE references at first use to save time at initialisation.
The following strings are supported:
String Interpretation ---------- ----------------- sub Sub of the reference object ->sub Sub of the root object ->sub(qw/f00 b4r/) Sub of the root object with arguments ->object->sub Sub of a child object of the root ->sub()->.. Sub of the root object
You can store either config strings or CODE references in the table.
The tables is transparent to CODE references, they are used as given. ( An earlier version of this module did currying .. this behaviour is altered. )
If you store an ARRAY ref it is expected to be of the form "[$value, $tag]", where $tag is an identifier used for handling selections of the table. The $value can again be a string or CODE ref.
If you store a HASH ref it will be tied recursively as a DispatchTable.
Keys are kept in the order they are first added, thus "keys(%table)" will always return the same order. This is to keep zoid's plugins in the order they are added. Also for each key a stack is used. Deleting a key only pops it's stack.
This modules doesn't check for security issues, it just runs arbitrary code.
EXPORT
This module can export the methods "wipe", "stack" and "tags".- add
- pop
- "wipe(\%table, $tag, @keys)"
- Wipes entries with tag $tag from given set of kaeys or from the whole table.
- "stack(\%table, $key, $tags)"
- Returns the whole stack for an given key, useful to loop trough stacks. $tags is a boolean, when true all items are returned as a sub array of CODE ref with tag.
- "tag(\%table, $key)"
- Returns the tag for the given key.
- "tags(\%table, $key)"
- Returns an array of all tags for given key.
AUTHOR
Jaap Karssenberg || Pardus [Larus] <pardus@cpan.org>Copyright (c) 2003 Jaap G Karssenberg. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
SEE ALSO
ZoidbergContenus ©2006-2024 Benjamin Poulain
Design ©2006-2024 Maxime Vantorre