__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
package if;
use strict;
our $VERSION = '0.0610';
sub work {
my $method = shift() ? 'import' : 'unimport';
unless (@_ >= 2) {
my $type = ($method eq 'import') ? 'use' : 'no';
die "Too few arguments to '$type if' (some code returning an empty list in list context?)"
}
return unless shift; # CONDITION
my $p = $_[0]; # PACKAGE
(my $file = "$p.pm") =~ s!::!/!g;
require $file; # Works even if $_[0] is a keyword (like open)
my $m = $p->can($method);
goto &$m if $m;
}
sub import { shift; unshift @_, 1; goto &work }
sub unimport { shift; unshift @_, 0; goto &work }
1;
__END__
=head1 NAME
if - C<use> a Perl module if a condition holds
=head1 SYNOPSIS
use if CONDITION, "MODULE", ARGUMENTS;
no if CONDITION, "MODULE", ARGUMENTS;
=head1 DESCRIPTION
=head2 C<use if>
The C<if> module is used to conditionally load another module. The construct:
use if CONDITION, "MODULE", ARGUMENTS;
... will load C<MODULE> only if C<CONDITION> evaluates to true; it has no
effect if C<CONDITION> evaluates to false. (The module name, assuming it
contains at least one C<::>, must be quoted when C<'use strict "subs";'> is in
effect.) If the CONDITION does evaluate to true, then the above line has the
same effect as:
use MODULE ARGUMENTS;
For example, the F<Unicode::UCD> module's F<charinfo> function will use two functions from F<Unicode::Normalize> only if a certain condition is met:
use if defined &DynaLoader::boot_DynaLoader,
"Unicode::Normalize" => qw(getCombinClass NFD);
Suppose you wanted C<ARGUMENTS> to be an empty list, I<i.e.>, to have the
effect of:
use MODULE ();
You can't do this with the C<if> pragma; however, you can achieve
exactly this effect, at compile time, with:
BEGIN { require MODULE if CONDITION }
=head2 C<no if>
The C<no if> construct is mainly used to deactivate categories of warnings
when those categories would produce superfluous output under specified
versions of F<perl>.
For example, the C<redundant> category of warnings was introduced in
Perl-5.22. This warning flags certain instances of superfluous arguments to
C<printf> and C<sprintf>. But if your code was running warnings-free on
earlier versions of F<perl> and you don't care about C<redundant> warnings in
more recent versions, you can call:
use warnings;
no if $] >= 5.022, q|warnings|, qw(redundant);
my $test = { fmt => "%s", args => [ qw( x y ) ] };
my $result = sprintf $test->{fmt}, @{$test->{args}};
The C<no if> construct assumes that a module or pragma has correctly
implemented an C<unimport()> method -- but most modules and pragmata have not.
That explains why the C<no if> construct is of limited applicability.
=head1 BUGS
The current implementation does not allow specification of the required
version of the module.
=head1 SEE ALSO
L<Module::Requires> can be used to conditionally load one or more modules,
with constraints based on the version of the module.
Unlike C<if> though, L<Module::Requires> is not a core module.
L<Module::Load::Conditional> provides a number of functions you can use to
query what modules are available, and then load one or more of them at runtime.
The L<provide> module from CPAN can be used to select one of several possible
modules to load based on the version of Perl that is running.
=head1 AUTHOR
Ilya Zakharevich L<mailto:ilyaz@cpan.org>.
=head1 COPYRIGHT AND LICENCE
This software is copyright (c) 2002 by Ilya Zakharevich.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
=cut
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| App | Folder | 0755 |
|
|
| Archive | Folder | 0755 |
|
|
| Attribute | Folder | 0755 |
|
|
| B | Folder | 0755 |
|
|
| CPAN | Folder | 0755 |
|
|
| Carp | Folder | 0755 |
|
|
| Class | Folder | 0755 |
|
|
| Compress | Folder | 0755 |
|
|
| Config | Folder | 0755 |
|
|
| DBM_Filter | Folder | 0755 |
|
|
| Devel | Folder | 0755 |
|
|
| Digest | Folder | 0755 |
|
|
| Encode | Folder | 0755 |
|
|
| Exporter | Folder | 0755 |
|
|
| ExtUtils | Folder | 0755 |
|
|
| File | Folder | 0755 |
|
|
| Filter | Folder | 0755 |
|
|
| Getopt | Folder | 0755 |
|
|
| HTTP | Folder | 0755 |
|
|
| I18N | Folder | 0755 |
|
|
| IO | Folder | 0755 |
|
|
| IPC | Folder | 0755 |
|
|
| JSON | Folder | 0755 |
|
|
| Locale | Folder | 0755 |
|
|
| Math | Folder | 0755 |
|
|
| Memoize | Folder | 0755 |
|
|
| Module | Folder | 0755 |
|
|
| Net | Folder | 0755 |
|
|
| Params | Folder | 0755 |
|
|
| Parse | Folder | 0755 |
|
|
| Perl | Folder | 0755 |
|
|
| PerlIO | Folder | 0755 |
|
|
| Pod | Folder | 0755 |
|
|
| Search | Folder | 0755 |
|
|
| TAP | Folder | 0755 |
|
|
| Term | Folder | 0755 |
|
|
| Test | Folder | 0755 |
|
|
| Test2 | Folder | 0755 |
|
|
| Text | Folder | 0755 |
|
|
| Thread | Folder | 0755 |
|
|
| Tie | Folder | 0755 |
|
|
| Time | Folder | 0755 |
|
|
| Unicode | Folder | 0755 |
|
|
| User | Folder | 0755 |
|
|
| autodie | Folder | 0755 |
|
|
| encoding | Folder | 0755 |
|
|
| overload | Folder | 0755 |
|
|
| pod | Folder | 0755 |
|
|
| unicore | Folder | 0755 |
|
|
| version | Folder | 0755 |
|
|
| warnings | Folder | 0755 |
|
|
| AnyDBM_File.pm | File | 2.56 KB | 0644 |
|
| AutoLoader.pm | File | 15.43 KB | 0644 |
|
| AutoSplit.pm | File | 19.18 KB | 0644 |
|
| Benchmark.pm | File | 30.3 KB | 0644 |
|
| CORE.pod | File | 3.11 KB | 0644 |
|
| CPAN.pm | File | 144.5 KB | 0644 |
|
| Carp.pm | File | 35.15 KB | 0644 |
|
| DB.pm | File | 18.48 KB | 0644 |
|
| DBM_Filter.pm | File | 14.05 KB | 0644 |
|
| Digest.pm | File | 10.96 KB | 0644 |
|
| DirHandle.pm | File | 2.04 KB | 0644 |
|
| Dumpvalue.pm | File | 17.25 KB | 0644 |
|
| English.pm | File | 4.65 KB | 0644 |
|
| Env.pm | File | 5.44 KB | 0644 |
|
| Exporter.pm | File | 18.76 KB | 0644 |
|
| Fatal.pm | File | 57.85 KB | 0644 |
|
| FileCache.pm | File | 5.42 KB | 0644 |
|
| FileHandle.pm | File | 6.65 KB | 0644 |
|
| FindBin.pm | File | 4.51 KB | 0644 |
|
| Internals.pod | File | 2.51 KB | 0644 |
|
| Memoize.pm | File | 31.82 KB | 0644 |
|
| NEXT.pm | File | 18.54 KB | 0644 |
|
| PerlIO.pm | File | 13.92 KB | 0644 |
|
| Safe.pm | File | 24.76 KB | 0644 |
|
| SelectSaver.pm | File | 1.05 KB | 0644 |
|
| SelfLoader.pm | File | 17.27 KB | 0644 |
|
| Symbol.pm | File | 4.79 KB | 0644 |
|
| Test.pm | File | 29.34 KB | 0644 |
|
| Test2.pm | File | 6.24 KB | 0644 |
|
| Thread.pm | File | 8.09 KB | 0644 |
|
| UNIVERSAL.pm | File | 6.67 KB | 0644 |
|
| XSLoader.pm | File | 11.13 KB | 0644 |
|
| _charnames.pm | File | 34.84 KB | 0644 |
|
| autodie.pm | File | 12.14 KB | 0644 |
|
| autouse.pm | File | 4.14 KB | 0644 |
|
| base.pm | File | 10.7 KB | 0644 |
|
| bigfloat.pm | File | 21.45 KB | 0644 |
|
| bigint.pm | File | 22.7 KB | 0644 |
|
| bignum.pm | File | 27.56 KB | 0644 |
|
| bigrat.pm | File | 20.64 KB | 0644 |
|
| blib.pm | File | 2.01 KB | 0644 |
|
| builtin.pm | File | 10.15 KB | 0644 |
|
| bytes.pm | File | 3.69 KB | 0644 |
|
| bytes_heavy.pl | File | 758 B | 0644 |
|
| charnames.pm | File | 20.56 KB | 0644 |
|
| constant.pm | File | 14.38 KB | 0644 |
|
| deprecate.pm | File | 4.92 KB | 0644 |
|
| diagnostics.pm | File | 18.88 KB | 0644 |
|
| dumpvar.pl | File | 15.19 KB | 0644 |
|
| experimental.pm | File | 8.72 KB | 0644 |
|
| feature.pm | File | 53.32 KB | 0644 |
|
| fields.pm | File | 9.25 KB | 0644 |
|
| filetest.pm | File | 3.91 KB | 0644 |
|
| if.pm | File | 3.55 KB | 0644 |
|
| integer.pm | File | 3.18 KB | 0644 |
|
| less.pm | File | 3.13 KB | 0644 |
|
| locale.pm | File | 4.77 KB | 0644 |
|
| meta_notation.pm | File | 2.02 KB | 0644 |
|
| ok.pm | File | 967 B | 0644 |
|
| open.pm | File | 8.3 KB | 0644 |
|
| overload.pm | File | 53.44 KB | 0644 |
|
| overloading.pm | File | 1.77 KB | 0644 |
|
| parent.pm | File | 2.64 KB | 0644 |
|
| perl5db.pl | File | 310.13 KB | 0644 |
|
| perlfaq.pm | File | 77 B | 0644 |
|
| sigtrap.pm | File | 8.53 KB | 0644 |
|
| sort.pm | File | 2.92 KB | 0644 |
|
| stable.pm | File | 4.55 KB | 0644 |
|
| strict.pm | File | 4.67 KB | 0644 |
|
| subs.pm | File | 945 B | 0644 |
|
| utf8.pm | File | 10.63 KB | 0644 |
|
| vars.pm | File | 2.4 KB | 0644 |
|
| version.pm | File | 1.93 KB | 0644 |
|
| version.pod | File | 9.6 KB | 0644 |
|
| vmsish.pm | File | 4.21 KB | 0644 |
|
| warnings.pm | File | 55.73 KB | 0644 |
|