[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
1 package if; 2 3 $VERSION = '0.05'; 4 5 sub work { 6 my $method = shift() ? 'import' : 'unimport'; 7 die "Too few arguments to `use if' (some code returning an empty list in list context?)" 8 unless @_ >= 2; 9 return unless shift; # CONDITION 10 11 my $p = $_[0]; # PACKAGE 12 (my $file = "$p.pm") =~ s!::!/!g; 13 require $file; # Works even if $_[0] is a keyword (like open) 14 my $m = $p->can($method); 15 goto &$m if $m; 16 } 17 18 sub import { shift; unshift @_, 1; goto &work } 19 sub unimport { shift; unshift @_, 0; goto &work } 20 21 1; 22 __END__ 23 24 =head1 NAME 25 26 if - C<use> a Perl module if a condition holds 27 28 =head1 SYNOPSIS 29 30 use if CONDITION, MODULE => ARGUMENTS; 31 32 =head1 DESCRIPTION 33 34 The construct 35 36 use if CONDITION, MODULE => ARGUMENTS; 37 38 has no effect unless C<CONDITION> is true. In this case the effect is 39 the same as of 40 41 use MODULE ARGUMENTS; 42 43 Above C<< => >> provides necessary quoting of C<MODULE>. If not used (e.g., 44 no ARGUMENTS to give), you'd better quote C<MODULE> yourselves. 45 46 =head1 BUGS 47 48 The current implementation does not allow specification of the 49 required version of the module. 50 51 =head1 AUTHOR 52 53 Ilya Zakharevich L<mailto:perl-module-if@ilyaz.org>. 54 55 =cut 56
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Tue Mar 17 22:47:18 2015 | Cross-referenced by PHPXref 0.7.1 |