use strict;
use warnings;
my @rules =
( q( return( "A", "Cat A" ) if $abs_diff < 75_000 and $source eq "ICE" ),
q( return( "B", "Dog B" ) if $abs_diff < 75_000 and $source eq "FOO" ),
q( return( "C", "Pig C" ) if $abs_diff < 75_000 and $source eq "BAR" ), );
my $abs_diff = 0;
my $source = 'FOO';
my @results = eval_rules();
print "@results\n";
sub eval_rules {
for my $rule ( @rules ) {
my ( $cat, $comment ) = eval $rule;
return ( $cat, $comment ) if $cat and $comment;
}
}
__END__
% perl rules.pl
B Dog B
####
q( $abs_diff < 75_000 and $source eq "ICE" ? ( "A", "Cat A" ) : () )
##
##
for my $rule ( @rules ) {
my @ret = eval $rule;
return @ret if @ret;
}