NAME
Language::Frink
DESCRIPTION
This module is a simple wrapper around the Frink interpreter written by
Alan Eliasen. As such, it requires a local copy of the Java interpreter
and the "frink.jar" file. For more information on Frink, please see
. This module works by starting
a JVM as a child process, and sending Frink expressions to it via a
pipe, and retrieving the results the same way. Also, this module has the
ability to function in a restricted mode it attempts to filter
"dangerous" expressions, such as functions that read files from local
disk, the network, and also commands that may persistantly change the
interpreter state.
The list of "dangerous" functions and expressions was derived by reading
the Frink documentation, and probably is not complete. If you find
commands that get through the filter that should, please report them.
The following functions are not allowed in restricted mode:
"lines[]"
"read[]"
"eval[]"
"input[]"
"select[]"
"callJava[]"
"newJava[]"
"staticJava[]"
The following language constructs are not allowed in restricted mode:
Regexes
Function Declarations
Unit display format
Loops
Time display format
Procedure blocks
File inclusion
Class Declaration
METHODS
"new(Param1 => ..., etc)"
This method will create a new Language::Frink object, and start up an
external Frink interpreter in a JVM. If it encounters any problems when
starting the JVM, then it will call "die".
CONSTRUCTOR PARAMETERS
These parameters are not case sensitive.
Restricted
This is a boolean value. If it is true, then expressions will be
filtered to attempt to prevent "dangerous" expressions from being
evaluated.
JavaPath
This specifies the entire commandline to run. This defaults to "java
-cp frink.jar frink.parser.Frink". If the java interpreter is not in
your path, or if the "frink.jar" is not in your current directory,
then you will need to change this.
"eval($expression)"
This passes the expression that is given to the Frink interpreter, and
returns the results as a string. This may return a single string will
multiple embedded newlines. If the interpreter's results end in a
newline, then it will be removed before returning, to make processing
the common case of a single line result easier. If the object is set to
"Restricted" then results will be filtered before evaluation. If it is
determined that the expression cannot be evaluated due to policy, then
the program will "croak" with an error message describing why.
FILES
This module requires a Java interpreter and a local copy of "frink.jar".
LICENSE
This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.
See .
AUTHOR
Clayton O'Neill