Mercurial > hg > egg-tcls
changeset 130:88ce9376f22d
calc: Use external Perl interpreter for the computation .. urgh.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Mon, 17 Sep 2012 17:34:36 +0300 |
parents | d981f51b39c2 |
children | b04ecf8bfb15 |
files | calc.tcl |
diffstat | 1 files changed, 5 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/calc.tcl Mon Sep 17 17:33:59 2012 +0300 +++ b/calc.tcl Mon Sep 17 17:34:36 2012 +0300 @@ -21,7 +21,8 @@ set calc_message "Calc v0.4 by ccr/TNSP" #set calc_reps [split "\$|| ||^|**|pi|3.14159265|e|2.71828183" "|"] -set calc_reps [split "\$||\;||^|**|pi|3.141592653589793238|PI|3.141592653589793238|e|2.71828183" "|"] +set calc_reps [split "\!||\$||\;||^|**|pi|3.141592653589793238|PI|3.141592653589793238|e|2.71828183" "|"] +#set calc_reps [split "\!||^|**|pi|3.141592653589793238|PI|3.141592653589793238|e|2.71828183" "|"] putlog "$calc_message" bind pub - !laske calc_pubmsg @@ -42,8 +43,9 @@ set equ [join [join [string map $calc_reps $args] ""] ""] # Use 'expr' to calculate the result, but catch any exceptions / errors - if {[catch { set res [expr $equ] } errmsg]} { - return $errmsg + if {[catch {set res [exec -- "/usr/bin/perl" "-e" "printf(\"%f\", $equ);"]} uerrmsg]} { + regsub -all " at -e line ." $uerrmsg "" uerrmsg + return $uerrmsg } else { return "$equ = $res" }