Cond::Expr - conditionals as expressions
my %args = ( foo => 'bar', (cond ($answer == 42) { answer => $answer } ($answer) { wrong_answer => 1 } otherwise { no_answer => 1 } ), );
This module implements a Lisp alike cond control structure.
cond
given/when
given
when
given is a statement, not an expression, and is therefore not readily usable as part of an expression unless its use is wrapped within a do block, which is cumbersome.
do
Additionally, this module avoids all the, possibly unwanted, side effects given/when and it's underlying smart matching mechanism happen to impose.
if/elsif/else
if
elsif
else
Similar to given, if is a statement, needing special care in order to be useful as part of a surrounding expression.
Nested ternary ?:
?:
Using nested ternary ?: expressions, such as in
my %args = ( foo => 'bar', (($answer == 42) ? (answer => $answer) : ($answer) ? (wrong_answer => 1) : (no_answer => 1)), );
can be used to achieve functionality similar to what this module provides. In fact, the above use of ?: is exactly what the "SYNOPSIS" for this module will compile into. The main difference is the cond syntax provided by this module being easier on the eye.
Takes a set of test/expr pairs. It evaluates each test one at a time. If a test returns logical true, cond evaluates and returns the value of the corresponding expr and doesn't evaluate any of the other tests or exprs. When none of the provided tests yield a true value, () or undef is returned in list and scalar context, respectively.
()
undef
Florian Ragwitz <rafl@debian.org>
This software is copyright (c) 2012 by Florian Ragwitz.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
To install Cond::Expr, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Cond::Expr
CPAN shell
perl -MCPAN -e shell install Cond::Expr
For more information on module installation, please visit the detailed CPAN module installation guide.