#!/usr/bin/perl ################################################## # Jap.pm - Mike Schilli, 2001 (m@perlmeister.com) ################################################## use warnings; use strict; package Jap; use DB_File; my %DB; my $VERSION = "1.0"; my $DBF = "/etc/scripts/jap.dat"; my %CMDS = map { $_ => \&$_ } qw(help quiz add dump); ################################################## sub shell { ################################################## $|++; print "*** Welcome to jap $VERSION ***\n"; tie %DB, "DB_File", $DBF, O_CREAT|O_RDWR, 0666 or die "Cannot open $DBF"; while() { chop; my($cmd, $params) = split ' ', $_, 2; next unless defined $cmd; last if $cmd eq "exit"; # Ende? if(exists $CMDS{$cmd}) { $CMDS{$cmd}->($params); # Kommando } else { print "Unknown command '$cmd'\n"; } } untie %DB; # Hash und DB synchronisieren print "*** Thanks for using jap.\n"; } ################################################## sub help { # Hilfe ausgeben ################################################## print < Hilfe return; } $ger =~ s/^\s+|\s+$//g; # Leerräume am Anfang $jap =~ s/^\s+|\s+$//g; # und Ende entfernen $DB{$ger} = $jap; # => in die Datenbank } ################################################## sub quiz { # Japanisch pauken - Abfragestunde ################################################## my @keys = keys %DB; while(@keys) { my $key = splice(@keys, rand @keys, 1); print "$key? (Hit Enter)\n"; # Frage my $in = ; # Benutzereingabe last unless $in =~ /^\s*$/; # Abbruch? print "$DB{$key}\n\n"; # Lösung ausgeben } print "End of quiz.\n"; } ################################################## sub dump { # Datenbankinhalt ausgeben ################################################## for my $key (sort keys %DB) { print "$key - $DB{$key}\n"; } } 1;