; use strict ; use warnings ; package Chest::Global ; use Chest # Changelog # # 2005/09/27 0.01 Initial Version # # 2005/10/11 0.02 # - add the possibility to change method names # - add a simple constructor to store it as an object # # 2005/10/14 0.03 # - make the constructor more flexible # ; our $VERSION='0.031' ; our $CHEST ; sub import { my $class=shift ; return if defined $CHEST ; my @m=('insert','insert_always','take','exists','show_chest') ; my %opt=%{shift() || {}} ; $CHEST=new Chest ; for my $method ( @m ) { my $call=$opt{$method} || $method ; eval qq~ sub $call { shift; our \$CHEST->$method(\@_) }~ } } ; sub new { my $pack=shift ; my $type=shift ; my $class = ref $pack || $pack ; return bless \$pack,$class if !$type || $type eq 'SCALAR' ; return bless {},$class if $type eq 'HASH' ; return bless {},$class if $type eq 'ARRAY' ; return bless $type,$class } ; 1 __END__ =head1 NAME Chest::Global - use it as a global chest. =head1 SYNOPSIS use Chest::Global; Chest::Global->insert('Function No. 1',sub{sub{print "hello world!\n"}}); Chest::Global->take('Function No. 1'); =head1 DESCRIPTION Creates a single chest to insert and take methods from. =head1 USAGE =head2 import Initialize the global object and defines the method names. Default is the same as in L. You can change them with a hash reference with original method names as keys and new names as values. Example: ; use Chest::Global { take => 'execute', insert => 'place' } =head1 SEE ALSO L =head1 AUTHOR Sebastian Knapp =head1 COPYRIGHT AND LICENSE Copyright (C) 2006 by Sebastian Knapp This library is free software; you can redistribute it and/or modify it under the same terms as perl itself. =cut