From 33613a85afc4b1481367fbe92a17ee59c240250b Mon Sep 17 00:00:00 2001 From: Sven Eisenhauer Date: Fri, 10 Nov 2023 15:11:48 +0100 Subject: add new repo --- .../examples/example16.pl | 84 ++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 Bachelor/Systemprogrammierung in Perl/examples/example16.pl (limited to 'Bachelor/Systemprogrammierung in Perl/examples/example16.pl') diff --git a/Bachelor/Systemprogrammierung in Perl/examples/example16.pl b/Bachelor/Systemprogrammierung in Perl/examples/example16.pl new file mode 100644 index 0000000..f680ed2 --- /dev/null +++ b/Bachelor/Systemprogrammierung in Perl/examples/example16.pl @@ -0,0 +1,84 @@ +#!/Perl/bin/perl +use strict; +use warnings; + +my ( %words ); +my ( $guess, $name ); +my ( $filename); +my ( $word, $myname); +my ( %last_good); + +&init_words; + +print "Wie heissen Sie? "; +$name = ; +chomp $name; + +if ( $name =~ /^gerhard\b/i ) { + print "Hallo Gerhard, wie nett, dass du da bist!\n"; +} +else { + print "Hallo $name!\n"; # Standard Gruß + print "Wie lautet das Geheimwort? "; + $guess = ; + chomp ( $guess ); + + while ( ! &good_word($name, $guess) ) { + print "Falsch geraten, nochmal. Wie lautet das Geheimwort? "; + $guess = ; + chomp $guess; + } +} + +dbmopen( %last_good, "lastdb", 0666 ); +$last_good {$name } = time; +dbmclose( %last_good ); +exit; + +sub init_words { + + while ( $filename = <*.txt> ) { + open(WORDSLIST, $filename ) or die "Konnte Datei nicht öffnen!!\n"; + if ( -M WORDSLIST > 7 ) { + die "Wortliste ist älter wie 7 Tage."; + } + while( $myname = ) { + chomp( $myname ); + $word = ; + chomp( $word ); + $words{ $myname } = $word; + write; # Ausgabe der Werte auf STDOUT + } + close(WORDSLIST); + } +} + +sub good_word { + my ( $somename, $someguess ) = @_; #Parameter bennenen + + $somename =~ s/\W.*//; # alles hinter dem ersten Wort vergessen + $somename =~ tr/A-Z/a-z/; # alles in Kleinbuschstaben + + if( $somename eq "gerhard" ) { + return 1; #Rückgabewert ist wahr + } + elsif ( ($words{$somename} || "groucho") eq $someguess ) { + return 1; #Rückgabewert ist wahr + } + else { + return 0; #Rückgabewert ist falsch + } +} + +format STDOUT_TOP = +Page @<< +$% +Dateiname Name Wort +================= ============ ============= +. + +format STDOUT = +@<<<<<<<<<<<<<<<< @<<<<<<<<<<< @<<<<<<<<<<<< +$filename, $myname, $word +. + -- cgit v1.2.3