If you're prepared to modify the way you input your function -- ie. use * instead of implied multiplication; add brackets to functions etc -- then something like this might get you started:
sub genFunc{ my $expr = shift; $expr =~ s[x][\$x]g; print "'$expr'"; return eval "sub{ my \$x = shift; return $expr; }"; };; my $f = genFunc( '(1-x)/(sin()**2*(2*x))' );; '(1-$x)/(sin()**2*(2*$x))' print "$_: ", $f->( $_ ) for 1 .. 10;; 1: 0 2: -0.302362609265759 3: -16.7379227868029 4: -0.65473590385359 5: -0.435002112398393 6: -5.33688415389075 7: -0.992910704853273 8: -0.446962308202578 9: -2.61681663614942 10: -1.52048103620111
Note: I'm fully aware that my attempt at modifying your function is wrong (sin() with out an argument?), but I couldn't make better sense of your intent.
In reply to Re: An Approach to Function to Subroutine using Regular Expression
by BrowserUk
in thread An Approach to Function to Subroutine using Regular Expression
by PerlJam2015
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |