Workflow::Condition::Evaluate - Inline condition that evaluates perl code for truth
This documentation describes version 1.62 of this package
<state name="foo"> <action name="foo action"> <condition test="$context->{foo} =~ /^Pita chips$/" />
If you've got a simple test you can use Perl code inline instead of specifying a condition class. We differentiate by the 'test' attribute -- if it's present we assume it's Perl code to be evaluated.
While it's easy to abuse something like this with:
<condition> <test><![CDATA[ if ( $context->{foo} =~ /^Pita (chips|snacks|bread)$/" ) { return $context->{bar} eq 'hummus'; } else { ... } ]]> </test> </condition>
It should provide a good balance.
One of the \%params should be 'test', which contains the text to evaluate for truth.
\%params
Evaluate the text passed into the constructor: if the evaluation returns a true value then the condition passes; if it throws an exception or returns a false value, the condition fails.
We use Safe to provide a restricted compartment in which we evaluate the text. This should prevent any sneaky bastards from doing something like:
<state...> <action...> <condition test="system( 'rm -rf /' )" />
The text has access to one variable, for the moment:
A hashref of all the parameters in the Workflow::Context object
Safe - From some quick research this module seems to have been packaged with core Perl 5.004+, and that's sufficiently ancient for me to not worry about people having it. If this is a problem for you shoot me an email.
Copyright (c) 2004-2023 Chris Winters. All rights reserved.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
Please see the LICENSE
Please see Workflow
To install Workflow, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Workflow
CPAN shell
perl -MCPAN -e shell install Workflow
For more information on module installation, please visit the detailed CPAN module installation guide.