Quiz - A Quiz engine
Version 0.01-TRIAL
my $quiz = create_quiz('Quiz1', 'question1' => 'answer1', 'question2' => 'answer2');
my %item = next_question('Quiz1');
print $item{question} . "\n";
my %res = respond_question($item{item_id}, 'response');
print ($res{grade} ? 'Correct answer.' : 'Wrong!');
get_average_grade();
get_average_grade(item_id => $item_id);
get_average_grade(quiz => 'quiz');
my @quizzes = get_quizzes();
my @quizzes = get_quizzes('Lesson');
rename_quiz($old_name, $new_name);
delete_quiz($quiz_name);
my @items = get_items(quiz => 'Name');
my @items = get_items();
my @items = get_item(question => 'language');
my @items = get_item(answer => 'Perl');
remove_item_from_quiz('Quiz name', $item_id);
edit_item_question($item_id, 'new question');
edit_item_answer($item_id, 'new answer');
delete_item($item_id);
my $session = session_start_quiz("Quiz1");
while (my $question = session_next_question($session)) {
my $answer = <STDIN>;
my $item = session_respond_question($answer, $session);
}
print session_results($session);
get_sessions();
get_sessions('Quiz name');
session_creation_time($session_id)
my $item_id = create_item('question', 'answer');
add_item_to_quiz($quiz, $item_id);
set_quiz_items_rank($quiz, $first_item_id, $second_item_id, $third_item_id);
delete_item_results()
delete_all_results()
cleanup_old_results();
cleanup_old_sessions();
Use Carton or find the list of modules to install in the file cpanfile.
$ carton install
Install sqlite3.
The default database will be in the file ./dbquiz.sqlite .
$ carton exec prove -I.
This library is not made for handling a large dataset. If you handle a great number of quizzes, use subroutines that operate only on a single quiz (which is not expected to be very big).
There is not account system, any call can modify any data. Build your own account system on top if needed.
This library has not been designed for thread safety.