if - C<use> a Perl module if a condition holds


if documentation Contained in the if distribution.

Index


Code Index:

NAME

Top

if - use a Perl module if a condition holds

SYNOPSIS

Top

  use if CONDITION, MODULE => ARGUMENTS;

DESCRIPTION

Top

The construct

  use if CONDITION, MODULE => ARGUMENTS;

has no effect unless CONDITION is true. In this case the effect is the same as of

  use MODULE ARGUMENTS;

Above => provides necessary quoting of MODULE. If not used (e.g., no ARGUMENTS to give), you'd better quote MODULE yourselves.

BUGS

Top

The current implementation does not allow specification of the required version of the module.

AUTHOR

Top

Ilya Zakharevich mailto:ilyaz@cpan.org.


if documentation Contained in the if distribution.

package if;

$VERSION = '0.0601';

sub work {
  my $method = shift() ? 'import' : 'unimport';
  die "Too few arguments to `use if' (some code returning an empty list in list context?)"
    unless @_ >= 2;
  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__