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