1package if; 2 3our $VERSION = '0.03'; 4 5sub work { 6 my $method = shift() ? 'import' : 'unimport'; 7 return unless shift; # CONDITION 8 9 my $p = $_[0]; # PACKAGE 10 (my $file = "$p.pm") =~ s!::!/!g; 11 require $file or die; 12 13 my $m = $p->can($method); 14 goto &$m if $m; 15} 16 17sub import { shift; unshift @_, 1; goto &work } 18sub unimport { shift; unshift @_, 0; goto &work } 19 201; 21__END__ 22 23=head1 NAME 24 25if - C<use> a Perl module if a condition holds 26 27=head1 SYNOPSIS 28 29 use if CONDITION, MODULE => ARGUMENTS; 30 31=head1 DESCRIPTION 32 33The construct 34 35 use if CONDITION, MODULE => ARGUMENTS; 36 37has no effect unless C<CONDITION> is true. In this case the effect is 38the same as of 39 40 use MODULE ARGUMENTS; 41 42=head1 BUGS 43 44The current implementation does not allow specification of the 45required version of the module. 46 47=head1 AUTHOR 48 49Ilya Zakharevich L<mailto:perl-module-if@ilyaz.org>. 50 51=cut 52 53