Txt2aiken.pl

Z Wikiverzity
Skočit na navigaci Skočit na vyhledávání

txt2aiken.pl Jednoduchý perlovský skript, který převede jednoduchý textový soubor s multichoice testem:

# Test z fyziky

Částice, které zprostředkují elektromagnetickou interakci:
(Zvolte všechny správné odpovědi)
* jsou bosony 
. jsou fermiony
* se nazývají fotony
. se nazývají gluony

do formátu AIKEN:

Částice, které zprostředkují elektromagnetickou interakci:                                      :
A) jsou bosony 
B) jsou fermiony
C) se nazývají fotony
D) se nazývají gluony
ANSWER: A, C
                                                                                                                                            
#! /usr/bin/perl
#Nějaká otázka:
#.  špatná odpověď
#*  správná odpověď

use Modern::Perl;

my $i = 0;
my @abc = qw (0 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z);
my $answ = 'ANSWER:';

while(<>) {
    next if /^\#/;       # komentáře
    next if /^\(/;       # nápověda k vyplnění testu (začíná závorkou) se netiskne
    if(/^$/) {           # za poslední z možných odpovědí je prázdná řádka
	if($i){          #  (nadbytečné se ignorují)
	    $answ =~ s/,$//;
	    print "$answ\n\n";
	    $answ = 'ANSWER:';
	    $i=0;
	}
	next;
    }
    if(/^\. +/) {	# špatná odpověď
	my $letter = $abc[++$i];
	print "$letter) $'";
	next;
    }
    if(/^\* +/) {	# správná odpověď
	my $letter = $abc[++$i];
	print "$letter) $'";
	$answ .= " $letter,";
	next;
    }
    print;              # jakýkoli jiný řádek (znění otázky) zůstane beze změny
}