Forum archive 2000-2006

Nandor Sieben - evaluator confusion

Nandor Sieben - evaluator confusion

by Arnold Pizer -
Number of replies: 0
inactiveTopicevaluator confusion topic started 7/14/2005; 12:49:09 AM
last post 7/14/2005; 9:19:05 AM
userNandor Sieben - evaluator confusion  blueArrow
7/14/2005; 12:49:09 AM (reads: 646, responses: 2)
The following code doesn't work. It gives the warning: not a CODE reference. I would like to write my own evaluator that calls a standard evaluator.
sub ans_eval {
my $correct = shift;
my $myeval = num_cmp($correct);
sub {
my $in = shift;
my $ans_hash = &$myeval($in);
# modife $ans_hash here a little

How much is 5+2?
{ ans_rule(10) }

ANS( ans_eval(7) );

What is the problem with it? The following simple perl code works, and I would think the answer evaluator uses the same principle except it returns a reference to an answer hash.


#!/usr/bin/perl -w                                                                                            

sub ff {

my $c = shift;

sub {

my $a = shift;




$reff = ff(2);

print &$reff(3);

<| Post or View Comments |>

userNandor Sieben - Re: evaluator confusion  blueArrow
7/14/2005; 1:42:15 AM (reads: 834, responses: 0)
I got it. Now I know that there are old style and new style evaluators. I need $myeval_evaluate($in). Where can I find info about the answer evaluator object?

<| Post or View Comments |>

userMichael Gage - Re: evaluator confusion  blueArrow
7/14/2005; 9:19:05 AM (reads: 839, responses: 0)
The old style (for Perl 4) is described at There is also some discussion at$763 about handling old and new style answer evaluators. I encourage you to use the AnswerEvaluator object as described in You may need to look at the code itself. For modifying existing answer evaluators, which is a lot of what you are trying to do at the moment, take a look at the code in John Jones has a number of straightforeward examples of modifying existing answer evaluators.

Hope this helps.

-- Mike

<| Post or View Comments |>