From: martinahansen Date: Tue, 28 Oct 2008 07:31:47 +0000 (+0000) Subject: fixed compute X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=a7eb72c33f9b4969db56379c3e5eda719b25c713;p=biopieces.git fixed compute git-svn-id: http://biopieces.googlecode.com/svn/trunk@281 74ccb610-7750-0410-82ae-013aeee3265d --- diff --git a/code_perl/Maasha/Biopieces.pm b/code_perl/Maasha/Biopieces.pm index 0a0501a..a284734 100644 --- a/code_perl/Maasha/Biopieces.pm +++ b/code_perl/Maasha/Biopieces.pm @@ -5238,7 +5238,7 @@ sub script_compute # Returns nothing. - my ( $record, $eval_key, $eval_val ); + my ( $record, $eval_key, @keys, $eval_val ); while ( $record = get_record( $in ) ) { @@ -5248,11 +5248,22 @@ sub script_compute { $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 );