Listing 2

JNIEXPORT jboolean JNICALL Java_jni_eperl_PerlInterpreter_eval
    (JNIEnv *env, jobject object, jint interpreterId, 
                                jstring statementBlock, jint blockSize) 
{
    assert(env != NULL);
    assert(object != NULL);
    assert(statementBlock != NULL);

    try {
        if (statementBlock == NULL || blockSize == 0) {
            throw CInterpreterException(
                "Null or empty Perl statement block reference passed in",
                __FILE__, __LINE__, "Java_jni_eperl_PerlInterpreter_eval()");
        }
        string statement = CopyJString(env, statementBlock, blockSize);
        GetPerlInterpreter(interpreterId)->Eval(statement);
    } catch(CInterpreterException& perlException) {
        ThrowInterpreterException(env, perlException, g_debugOn);
        return JNI_FALSE;
    }
    return JNI_TRUE;
}