# Returns nothing.
- my ( $record, $eval_key, $eval_val );
+ my ( $record, $eval_key, @keys, $eval_val );
while ( $record = get_record( $in ) )
{
{
$eval_key = $1;
$eval_val = $2;
- }
- map { $eval_val =~ s/\Q$_\E/$record->{ $_ }/g } keys %{ $record };
+ if ( not @keys )
+ {
+ @keys = split /\s+|\+|-|\*|\/|\*\*/, $eval_val;
+
+ @keys = grep { exists $record->{ $_ } } @keys;
+ }
+
+ map { $eval_val =~ s/\Q$_\E/$record->{ $_ }/g } @keys;
- $record->{ $eval_key } = eval "$eval_val" or Maasha::Common::error( "eval failed -> $@" );
+ $record->{ $eval_key } = eval "$eval_val" or Maasha::Common::error( "eval failed -> $@" );
+ }
+ else
+ {
+ warn qq(WARNING: Bad compute expression: "$options->{ 'eval' }"\n);
+ }
}
put_record( $record, $out );