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"
   }