| modules documentation | Contained in the modules distribution. |
modules - loads several modules with single use-command
use modules qw(strict warnings 5.006 Data::Dumper);
# and now we can use i.e. Data::Dumper
print Dumper { one => 1, two => 2 };
If you are bored by multiple 'use'-statement and asked why you cannot load several modules with one single 'use'-command: You will love 'modules', because thats what it does.
Ironically 'modules' is a module. The name was choosen, because the 'use modules' construct sounds self-explanatory.
This options controls whether modules which failed during loading become automatically loaded from CPAN (if available).
Default: ON.
Example:
use modules qw(strict warnings -force IO::Extended +force Class::Maker); (Meaning: If 'IO::Extended' is not loadable, do not try to install it via CPAN).
BTW the example is semantically identical to:
use modules qw(strict warnings Class::Maker -force IO::Extended);
use modules qw(5.006 strict warnings Data::Dumper);
becomes the short form for:
use 5.006; use strict; use warnings; use Data::Dumper;
use modules ( qw(strict), { IO::Extended => '(:all)' } );
becomes the short form for:
use strict; use IO::Extended qw(:all);
None by default.
Murat Ünalan, <muenalan@cpan.org>
Copyright (c) 2002 Murat Ünalan. All rights reserved.
This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.
perl.
| modules documentation | Contained in the modules distribution. |
package modules; our $VERSION = '0.04'; our $DEBUG = 0; use Carp; our $force = 1; sub import { my $package = shift; my $context = scalar caller; my @failed; for ( @_ ) { if( /^([\-\+])force$/ ) { $force = ($1 eq '-') ? 0 : 1; warn "force turned $force\n" if $DEBUG; next; } if( ref( $_ ) eq 'HASH' ) { foreach my $key ( keys %$_ ) { printf "Hash: LOADING %s with %s\n", $key, $_->{$key} if $DEBUG; eval "package $context; use $key ".$_->{$key}; if( $@ ) { push @failed, $key; carp "Can't use module '$key'. $@"; } } next; } eval "package $context; use $_"; if( $@ ) { push @failed, $_; carp "Can't use module '$_'. $@"; } } if( @failed && $force ) { use CPAN; CPAN::Shell->install( @failed ); } } # Preloaded methods go here. 1; __END__