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/EXAMPLE2.PL | 23 ++++ .../examples/EXAMPLE3.PL | 31 +++++ .../examples/EXAMPLE4.PL | 49 ++++++++ .../examples/EXAMPLE5.PL | 40 ++++++ .../examples/EXAMPLE6.PL | 39 ++++++ .../examples/EXAMPLE7.PL | 41 ++++++ .../examples/EXAMPLE8.PL | 50 ++++++++ .../examples/EXAMPLE9.PL | 55 ++++++++ .../examples/buchlist.pl | 140 +++++++++++++++++++++ .../examples/example1.pl | 18 +++ .../examples/example10.pl | 60 +++++++++ .../examples/example11.pl | 62 +++++++++ .../examples/example12.pl | 69 ++++++++++ .../examples/example13.pl | 73 +++++++++++ .../examples/example14.pl | 72 +++++++++++ .../examples/example15.pl | 79 ++++++++++++ .../examples/example16.pl | 84 +++++++++++++ .../examples/example17.pl | 81 ++++++++++++ .../examples/example1b.pl | 12 ++ .../examples/hello1.pl | 3 + .../examples/hello2.pl | 13 ++ .../examples/hello3.pl | 15 +++ .../examples/hello4.pl | 20 +++ .../examples/lastdb.dir | 0 .../examples/lastdb.pag | Bin 0 -> 1024 bytes .../Systemprogrammierung in Perl/examples/pass.pwd | 2 + .../Systemprogrammierung in Perl/examples/pass.txt | 4 + .../examples/printdb.pl | 16 +++ .../Systemprogrammierung in Perl/examples/tmon.out | 29 +++++ .../examples/wordlist.pwd | 4 + .../examples/wordlist.txt | 8 ++ 31 files changed, 1192 insertions(+) create mode 100644 Bachelor/Systemprogrammierung in Perl/examples/EXAMPLE2.PL create mode 100644 Bachelor/Systemprogrammierung in Perl/examples/EXAMPLE3.PL create mode 100644 Bachelor/Systemprogrammierung in Perl/examples/EXAMPLE4.PL create mode 100644 Bachelor/Systemprogrammierung in Perl/examples/EXAMPLE5.PL create mode 100644 Bachelor/Systemprogrammierung in Perl/examples/EXAMPLE6.PL create mode 100644 Bachelor/Systemprogrammierung in Perl/examples/EXAMPLE7.PL create mode 100644 Bachelor/Systemprogrammierung in Perl/examples/EXAMPLE8.PL create mode 100644 Bachelor/Systemprogrammierung in Perl/examples/EXAMPLE9.PL create mode 100644 Bachelor/Systemprogrammierung in Perl/examples/buchlist.pl create mode 100644 Bachelor/Systemprogrammierung in Perl/examples/example1.pl create mode 100644 Bachelor/Systemprogrammierung in Perl/examples/example10.pl create mode 100644 Bachelor/Systemprogrammierung in Perl/examples/example11.pl create mode 100644 Bachelor/Systemprogrammierung in Perl/examples/example12.pl create mode 100644 Bachelor/Systemprogrammierung in Perl/examples/example13.pl create mode 100644 Bachelor/Systemprogrammierung in Perl/examples/example14.pl create mode 100644 Bachelor/Systemprogrammierung in Perl/examples/example15.pl create mode 100644 Bachelor/Systemprogrammierung in Perl/examples/example16.pl create mode 100644 Bachelor/Systemprogrammierung in Perl/examples/example17.pl create mode 100644 Bachelor/Systemprogrammierung in Perl/examples/example1b.pl create mode 100644 Bachelor/Systemprogrammierung in Perl/examples/hello1.pl create mode 100644 Bachelor/Systemprogrammierung in Perl/examples/hello2.pl create mode 100644 Bachelor/Systemprogrammierung in Perl/examples/hello3.pl create mode 100644 Bachelor/Systemprogrammierung in Perl/examples/hello4.pl create mode 100644 Bachelor/Systemprogrammierung in Perl/examples/lastdb.dir create mode 100644 Bachelor/Systemprogrammierung in Perl/examples/lastdb.pag create mode 100644 Bachelor/Systemprogrammierung in Perl/examples/pass.pwd create mode 100644 Bachelor/Systemprogrammierung in Perl/examples/pass.txt create mode 100644 Bachelor/Systemprogrammierung in Perl/examples/printdb.pl create mode 100644 Bachelor/Systemprogrammierung in Perl/examples/tmon.out create mode 100644 Bachelor/Systemprogrammierung in Perl/examples/wordlist.pwd create mode 100644 Bachelor/Systemprogrammierung in Perl/examples/wordlist.txt (limited to 'Bachelor/Systemprogrammierung in Perl/examples') diff --git a/Bachelor/Systemprogrammierung in Perl/examples/EXAMPLE2.PL b/Bachelor/Systemprogrammierung in Perl/examples/EXAMPLE2.PL new file mode 100644 index 0000000..f33d63c --- /dev/null +++ b/Bachelor/Systemprogrammierung in Perl/examples/EXAMPLE2.PL @@ -0,0 +1,23 @@ +#!/Perl/bin/perl +use strict; +use warnings; + +$| = 1; #flush output + +my $name; +print "Wie heissen Sie? "; +$name = ; +chomp $name; + +# Der Vergleich von Strings erfolgt durch den eq +# Operator. +# PERL kennt wie die meisten Programmiersprachen die if-else Konstruktion +# und Bloecke mit geschweiften Klammern + +if ( $name eq "gerhard" ) { + print "Hallo Gerhard, wie nett dass du da bist!\n"; +} +else { + print "Hallo $name!\n"; # Standard Gruss +} +exit; diff --git a/Bachelor/Systemprogrammierung in Perl/examples/EXAMPLE3.PL b/Bachelor/Systemprogrammierung in Perl/examples/EXAMPLE3.PL new file mode 100644 index 0000000..70ff194 --- /dev/null +++ b/Bachelor/Systemprogrammierung in Perl/examples/EXAMPLE3.PL @@ -0,0 +1,31 @@ +#!/Perl/bin/perl + +use strict; +use warnings; +$| = 1; #flush output + +my ( $secretword, $name, $guess ); + +$secretword = "Lama"; #unser Geheimwort +print "Wie heissen Sie? "; +$name = ; +chomp $name; +if ( $name eq "gerhard" ) { + 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 ); + +# Perl kennt auch eine while Anweisung fuer die abweisende Schleife +# Der Operator ne vergleicht zwei Strings auf Ungleicheit + + while ( $guess ne $secretword ) { + print "Falsch geraten, nochmal. Wie lautet das Geheimwort? "; + $guess = ; + chomp $guess; + } +} +exit; diff --git a/Bachelor/Systemprogrammierung in Perl/examples/EXAMPLE4.PL b/Bachelor/Systemprogrammierung in Perl/examples/EXAMPLE4.PL new file mode 100644 index 0000000..aa587b5 --- /dev/null +++ b/Bachelor/Systemprogrammierung in Perl/examples/EXAMPLE4.PL @@ -0,0 +1,49 @@ +#!/Perl/bin/perl +use strict; +use warnings; +$| = 1; #flush output + +# Arrays beginnen immer mit dem @ Zeichen +# Arrays koennen sofort durch eine Liste in runden Klammern initialisiert +# werden + +my @words = ("Kamel", "Lama", "Auster"); #unser Geheimwort +my ($name, $guess, $ipass, $correct); + +print "Wie heissen Sie? "; +$name = ; +chomp $name; +if ( $name eq "gerhard" ) { + print "Hallo Gerhard, wie nett daß du da bist!\n"; +} +else { + print "Hallo $name!\n"; # Standard Gruß + print "Wie lautet das Geheimwort? "; + $guess = ; + chomp ( $guess ); +# Skalaren Variablen koennen auch Integer oder +# oder Float Werte zugewiesen werden + $ipass = 0; + $correct = "vielleicht"; + while ( $correct eq "vielleicht" ) { + +# Der Zugriff auf ein Array Element erfolgt indem man den numerischen Index +# in eckige Klammern schreibt. +# Das Ergebnis ist ein Skalar, daher das $ Zeichen + + if ( $words[$ipass] eq $guess ) { #richtig + $correct = "Ja"; + } +# der elsif Operator steht statt einem else if + elsif ( $ipass < 2 ) { # weiterraten + $ipass = $ipass + 1; + } + else { # keine weiteren Passwörter + print "Falsch geraten, nochmal. Wie lautet das Geheimwort? "; + $guess = ; + chomp $guess; + $ipass = 0; + } + } +} +exit; diff --git a/Bachelor/Systemprogrammierung in Perl/examples/EXAMPLE5.PL b/Bachelor/Systemprogrammierung in Perl/examples/EXAMPLE5.PL new file mode 100644 index 0000000..6bdc0aa --- /dev/null +++ b/Bachelor/Systemprogrammierung in Perl/examples/EXAMPLE5.PL @@ -0,0 +1,40 @@ +#!/Perl/bin/perl +use strict; +use warnings; +$| = 1; #flush output + +# Hashes beginnen immer mit einem Prozentzeichen und koennen +# ueber eine Liste initialisiert werden + +my %words = ("fred" => "Kamel", + "barney"=> "Lama", + "betty" => "Auster", + "wilma" => "Auster" ); + +my ( $name, $guess, $secretword ); + +print "Wie heissen Sie? "; +$name = ; +chomp $name; +if ( $name eq "gerhard" ) { + print "Hallo Gerhard, wie nett dass du da bist!\n"; +} +else { + print "Hallo $name!\n"; # Standard Gruß + +# Der Zugriff auf einen Hashwert erfolgt indem man den +# Schluessel als Index in geschweiften Klammern angibt +# Das Ergebnis ist ein Skalar, daher das $ Zeichen + + $secretword = $words{$name}; # Passwort holen + print "Wie lautet das Geheimwort? "; + $guess = ; + chomp ( $guess ); + + while ( $guess ne $secretword ) { + print "Falsch geraten, nochmal. Wie lautet das Geheimwort? "; + $guess = ; + chomp $guess; + } +} +exit; diff --git a/Bachelor/Systemprogrammierung in Perl/examples/EXAMPLE6.PL b/Bachelor/Systemprogrammierung in Perl/examples/EXAMPLE6.PL new file mode 100644 index 0000000..6a00200 --- /dev/null +++ b/Bachelor/Systemprogrammierung in Perl/examples/EXAMPLE6.PL @@ -0,0 +1,39 @@ +#!/Perl/bin/perl +use strict; +use warnings; +$| = 1; #flush output + +my %words = ("fred", "Kamel", + "barney", "Lama", + "betty", "Auster", + "wilma", "Auster" ); + +my ( $name, $guess, $secretword ); + +print "Wie heissen Sie? "; +$name = ; +chomp $name; +if ( $name eq "gerhard" ) { + print "Hallo Gerhard, wie nett dass du da bist!\n"; +} +else { + print "Hallo $name!\n"; # Standard Gruß +# mit exists kann man ueberpruefen ob ein Schluessel in einem Hash vorhanden +# ist + if( exists $words{$name} ){ + $secretword = $words{$name} ; # Passwort holen + } + else { + $secretword = "groucho"; # für alle die kein Passwort haben + } + print "Wie lautet das Geheimwort? "; + $guess = ; + chomp ( $guess ); + + while ( $guess ne $secretword ) { + print "Falsch geraten, nochmal. Wie lautet das Geheimwort? "; + $guess = ; + chomp $guess; + } +} + diff --git a/Bachelor/Systemprogrammierung in Perl/examples/EXAMPLE7.PL b/Bachelor/Systemprogrammierung in Perl/examples/EXAMPLE7.PL new file mode 100644 index 0000000..49c5a9b --- /dev/null +++ b/Bachelor/Systemprogrammierung in Perl/examples/EXAMPLE7.PL @@ -0,0 +1,41 @@ +#!/Perl/bin/perl +use strict; +use warnings; +$| = 1; #flush output + +my %words = ("fred", "Kamel", + "barney", "Lama", + "betty", "Auster", + "wilma", "Auster" ); +my ( $name, $guess, $secretword ); + +print "Wie heissen Sie? "; +$name = ; +chomp $name; + +# mit einem regulären Ausdruck wird die Abfrage flexibler +# ^=Zeilenanfang, \b=eine Wortgrenze, /i = ignoriere Gross und Kleinschreibung +# =~ Der Matching Operator +if ( $name =~ /^gerhard\b/i ) { + print "Hallo Gerhard, wie nett, dass du da bist!\n"; +} +else { + print "Hallo $name!\n"; # Standard Gruß + if( exists $words{$name} ){ + $secretword = $words{$name} ; # Passwort holen + } + else { + $secretword = "groucho"; # für alle die kein Passwort haben + } + + print "Wie lautet das Geheimwort? "; + $guess = ; + chomp ( $guess ); + + while ( $guess ne $secretword ) { + print "Falsch geraten, nochmal. Wie lautet das Geheimwort? "; + $guess = ; + chomp $guess; + } +} +exit; diff --git a/Bachelor/Systemprogrammierung in Perl/examples/EXAMPLE8.PL b/Bachelor/Systemprogrammierung in Perl/examples/EXAMPLE8.PL new file mode 100644 index 0000000..4e9e1bc --- /dev/null +++ b/Bachelor/Systemprogrammierung in Perl/examples/EXAMPLE8.PL @@ -0,0 +1,50 @@ +#!/Perl/bin/perl +use strict; +use warnings; +$| = 1; #flush output + +# in diesem Programm benutzen wir den Substitutionsoperator +# s/muster/Ersetzung/ +# und den Transliteraloperator +# tr/SUCHLISTE/ERSETZUNGSLISTE/ + +my %words = ("fred", "Kamel", + "barney", "Lama", + "betty", "Auster", + "wilma", "Auster" ); +my ( $name, $guess, $secretword, $original_name ); + + +print "Wie heissen Sie? "; +$name = ; +chomp $name; + +$original_name = $name; +$name =~ s/\W.*//; # alles hinter dem ersten Wort vergessen +$name =~ tr/A-Z/a-z/; # alles in Kleinbuschstaben + +if ( $name eq "gerhard" ) { + print "Hallo Gerhard, wie nett, dass du da bist!\n"; +} +else { + print "Hallo $original_name!\n"; # Standard Gruß + + if( exists $words{$name} ){ + $secretword = $words{$name} ; # Passwort holen + } + else { + $secretword = "groucho"; # für alle die kein Passwort haben + } + + print "Wie lautet das Geheimwort? "; + $guess = ; + chomp ( $guess ); + + while ( $guess ne $secretword ) { + print "Falsch geraten, nochmal. Wie lautet das Geheimwort? "; + $guess = ; + chomp $guess; + } +} +exit; + diff --git a/Bachelor/Systemprogrammierung in Perl/examples/EXAMPLE9.PL b/Bachelor/Systemprogrammierung in Perl/examples/EXAMPLE9.PL new file mode 100644 index 0000000..0f83d36 --- /dev/null +++ b/Bachelor/Systemprogrammierung in Perl/examples/EXAMPLE9.PL @@ -0,0 +1,55 @@ +#!/Perl/bin/perl +use strict; +use warnings; +# in Perl kann man mit qw "Quote Words" die Initialisierung vereinfachen +$| = 1; #flush output + +my %words = qw (fred Kamel + barney Lama + betty Auster + wilma Auster); + +my ( $name, $guess, $secretword, $original_name ); + + +print "Wie heissen Sie? "; +$name = ; +chomp $name; + +$original_name = $name; +$name =~ s/\W.*//; # alles hinter dem ersten Wort vergessen +$name =~ tr/A-Z/a-z/; # alles in Kleinbuschstaben + +if ( $name eq "gerhard" ) { + print "Hallo Gerhard, wie nett, dass du da bist!\n"; +} +else { + print "Hallo $original_name!\n"; # Standard Gruß + + if( exists $words{$name} ){ + $secretword = $words{$name} ; # Passwort holen + } + else { + $secretword = "groucho"; # für alle die kein Passwort haben + } + + + print "Wie lautet das Geheimwort? "; + $guess = ; + chomp ( $guess ); + + while ( $guess ne $secretword ) { + print "Falsch geraten, nochmal. Wie lautet das Geheimwort? "; + $guess = ; + chomp $guess; + } + print "Hallo $name, der Zugang ist erlaubt\n"; +} +exit; + + + + + + + diff --git a/Bachelor/Systemprogrammierung in Perl/examples/buchlist.pl b/Bachelor/Systemprogrammierung in Perl/examples/buchlist.pl new file mode 100644 index 0000000..2b9dad8 --- /dev/null +++ b/Bachelor/Systemprogrammierung in Perl/examples/buchlist.pl @@ -0,0 +1,140 @@ +#!c:/perl/bin/perl.exe +my ( @Buchlist, $buchzeiger ); +my ($anz); +my ($mittelwert); +my (%mfunc) = ( + 1 => sub {$anz = @Buchlist; print " Die Anzahl der Buecher ist $anz \n" ; }, + 2 => sub { &mittelwert; print "Der mittlere Preis betraegt $mittelpreis \n";}, + 3 => \&teuer, + 4 => \&billig, + 5 => \&mittel, + 6 => \&nextBuch, + 7 => \&lastBuch, + 8 => \&searchBuch, + 9 => sub {exit();} + ); +openfile(); # File einlesen +menu(); # print menue + +while ( 1 ) { + chomp ($prompt = ); + if ( $mfunc{$prompt} ){ + $mfunc{$prompt}() ; + } + else { + &menu; + } +} + +sub menu { + print <; + open ( FILE, $name ) or die "konnte $name nicht oeffnen"; + while ( ) { + ($Titel, $Autor, $Verlag,$Preis, $Bestell) = split ";"; + push( @Buchlist, + { + TITEL => $Titel, + VERLAG => $Verlag, + AUTOR => $Autor, + PREIS => $Preis, + BESTELL => $Bestell + }); + } + $anz = scalar @Buchlist; + mittelwert(); + print " Es wurden $anz Buecher eingelesen \n"; +} + +sub mittelwert { + my($buch); + $mittelpreis = 0; + + $anz = @Buchlist; + foreach $buch (@Buchlist) { + $mittelpreis += $buch->{PREIS}; + } + $mittelpreis /= $anz; +} + +sub billig { + my ($low) = 0; + my($buch); + foreach $buch (@Buchlist) { + if ( $buch->{PREIS} < $mittelpreis ) { + print "$buch->{TITEL} \n"; + $low++; + } + } + print "\nDie Anzahl der Buecher billiger als der Durchschnitt ist $low \n"; +} + +sub teuer { + my ($high ) = 0; + my ($buch ); + foreach $buch (@Buchlist) { + if ( $buch->{PREIS} > $mittelpreis ) { + print "$buch->{TITEL} \n"; + $high++; + } + } + print "\nDie Anzahl der Buecher teurer als der Durchschnitt ist $high \n"; +} + +sub mittel { + my( $lowLimit, $highLimit ); + my ($buch ); + print "untere Preisschranke ? "; + $lowLimit = ; + print "obere Preisschranke ? "; + $highLimit = ; + foreach $buch (@Buchlist) { + if ( $buch->{PREIS} > $lowLimit && $buch->{PREIS} < $highLimit ) { + print "$buch->{TITEL} \n"; + } + } +} + +sub nextBuch { + printbuch( $Buchlist[$buchzeiger++] ) if $buchzeiger < $anz; +} + +sub lastBuch { + printbuch( $Buchlist[$buchzeiger--] ) if $buchzeiger >= 0; +} + +sub searchBuch { + my ($buch ); + my ($search ); + print "Suchbegriff : "; + chomp ($search = ); + + foreach $buch (@Buchlist) { + print "$buch->{TITEL} \n" if $buch->{TITEL} =~ /\Q$search\E/ ; + } +} +sub printbuch{ + my ($buch ) = shift @_; + print " Titel = $buch->{TITEL} \n"; + print " Verlag = $buch->{VERLAG} \n"; + print " Autor = $buch->{AUTOR} \n"; + print " Preis = $buch->{PREIS} \n"; + print " Bestellnr = $buch->{BESTELL} \n"; + print " \n"; +} + diff --git a/Bachelor/Systemprogrammierung in Perl/examples/example1.pl b/Bachelor/Systemprogrammierung in Perl/examples/example1.pl new file mode 100644 index 0000000..1b6ccc8 --- /dev/null +++ b/Bachelor/Systemprogrammierung in Perl/examples/example1.pl @@ -0,0 +1,18 @@ +#!/Perl/bin/perl + +use strict; +use warnings; +$| = 1; #flush output +my $name; + +print "Wie heissen Sie? "; + +# der <> Operator dient zum Lesen von Datenströmen (Files oder SDTIN) +$name = ; + +# Der Operator chomp entfernt +# entfernt das Zeilenende (\n unter UNIX, \r\n unter Windows) +chomp $name; + +print "Hallo $name! \n"; +exit 0; diff --git a/Bachelor/Systemprogrammierung in Perl/examples/example10.pl b/Bachelor/Systemprogrammierung in Perl/examples/example10.pl new file mode 100644 index 0000000..c991732 --- /dev/null +++ b/Bachelor/Systemprogrammierung in Perl/examples/example10.pl @@ -0,0 +1,60 @@ +#!/Perl/bin/perl +use strict; +use warnings; + +my %words = ("fred", "Kamel", + "barney", "Lama", + "betty", "Auster", + "wilma", "Auster" ); + +my ( $name, $guess, $secretword, $original_name ); + +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 "\nFalsch geraten, nochmal. Wie lautet das Geheimwort? "; + $guess = ; + chomp $guess; + } +} +exit; + +# ein erstes Unterprogramm + +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 + } + # ein leerer String und undef haben den logischen Wert FALSE + elsif ( ($words{$somename} || "groucho") eq $someguess ) { + return 1; #Rückgabewert ist wahr + } + else { + return 0; #Rückgabewert ist falsch + } +} + + + + + + + + + diff --git a/Bachelor/Systemprogrammierung in Perl/examples/example11.pl b/Bachelor/Systemprogrammierung in Perl/examples/example11.pl new file mode 100644 index 0000000..47e984b --- /dev/null +++ b/Bachelor/Systemprogrammierung in Perl/examples/example11.pl @@ -0,0 +1,62 @@ +#!/Perl/bin/perl +use strict; +use warnings; + +# Nun erfolgt die Initialisierung aus einem File in einem Unterprogramm + + +my ( %words ); +my ( $name, $guess ); + +&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; + } +} +exit; + +sub init_words { + my ($word, $myname); + open(WORDSLIST, "wordlist.txt"); + while( $myname = ) { + chomp( $myname ); + $word = ; + chomp( $word ); + $words{ $myname } = $word; + } + 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 + } +} + diff --git a/Bachelor/Systemprogrammierung in Perl/examples/example12.pl b/Bachelor/Systemprogrammierung in Perl/examples/example12.pl new file mode 100644 index 0000000..f88f58a --- /dev/null +++ b/Bachelor/Systemprogrammierung in Perl/examples/example12.pl @@ -0,0 +1,69 @@ +#!/Perl/bin/perl + +use strict; +use warnings; + +my ( %words ); + +my ( $name, $guess ); + +&init_words; + +print "Wie heissen Sie? "; +$name = ; +chomp $name; + +if ( $name =~ /^gerhard\b/i ) { + print "Hallo Gerhard, wie nett, daß 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; + } +} +exit; + +sub init_words { + my ($word, $myname); +# der die Befehl führt zu einem Abbruch des Programms und zur Ausgabe einer +# Fehlermeldung +# der Operator or hat eine besonders niedrige Assoziativität. Der Teil +# hinter dem or Operator wird ausgeführt, wenn der erste Teil als +# Ergebnis FALSE hat + open(WORDSLIST, "wordlist.txt") or die "Konnte Datei nicht öffnen!!\n"; + if ( -M WORDSLIST > 7 ) { + die "Wortliste ist älter wie 7 Tage. \n"; + } + while( $myname = ) { + chomp( $myname ); + $word = ; + chomp( $word ); + $words{ $myname } = $word; + } + 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 + } +} + diff --git a/Bachelor/Systemprogrammierung in Perl/examples/example13.pl b/Bachelor/Systemprogrammierung in Perl/examples/example13.pl new file mode 100644 index 0000000..af50a67 --- /dev/null +++ b/Bachelor/Systemprogrammierung in Perl/examples/example13.pl @@ -0,0 +1,73 @@ +#!/Perl/bin/perl +use strict; +use warnings; + +# in diesem Programm werden mehrere Passwort Files geöffnet + +my ( %words ); +my ( $name, $guess ); + +&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; + } +} + +# eine Variante mit mehreren Passwortfiles + +sub init_words { + my($filename); + my($word, $myname); + +# hier wird der Interpolationsmechanismus der Shell ausgenutzt +# und alle Files gesucht die mit dem angegebenen Muster übereinstimmen + + while ( $filename = <*.txt> ) { + open(WORDSLIST, $filename ) or die "Konnte Datei nicht öffnen!!\n"; + if ( -M WORDSLIST > 7 ) { + die "$filename ist älter wie 7 Tage."; + } + while( $myname = ) { + chomp( $myname ); + $word = ; + chomp( $word ); + $words{ $myname } = $word; + } + 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" ) { + 1; #Rückgabewert ist wahr + } + elsif ( ($words{$somename} || "groucho") eq $someguess ) { + 1; #Rückgabewert ist wahr + } + else { + 0; #Rückgabewert ist falsch + } +} + diff --git a/Bachelor/Systemprogrammierung in Perl/examples/example14.pl b/Bachelor/Systemprogrammierung in Perl/examples/example14.pl new file mode 100644 index 0000000..4c45655 --- /dev/null +++ b/Bachelor/Systemprogrammierung in Perl/examples/example14.pl @@ -0,0 +1,72 @@ +#!/Perl/bin/perl + +# Erzeugen einer E-Mail + +use strict; +use warnings; + +my ( %words ); +my ( $name, $guess ); + +&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; + } +} +exit; + +sub init_words { + my($filename); + my($word, $myname); + + 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; + } + 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 { + open( MAIL, '|mail g.raffius@fbi.fh-darmstadt.de'); + print MAIL "Achtung $somename hat $someguess erraten\n"; + close( MAIL ); + return 0; #Rückgabewert ist falsch + } +} + diff --git a/Bachelor/Systemprogrammierung in Perl/examples/example15.pl b/Bachelor/Systemprogrammierung in Perl/examples/example15.pl new file mode 100644 index 0000000..8e9480a --- /dev/null +++ b/Bachelor/Systemprogrammierung in Perl/examples/example15.pl @@ -0,0 +1,79 @@ +#!/Perl/bin/perl +use strict; +use warnings; + +my ( %words ); +my ( $guess, $name ); +my ( $filename); +my ( $word, $myname); + +&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; + } +} +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 +. + 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 +. + diff --git a/Bachelor/Systemprogrammierung in Perl/examples/example17.pl b/Bachelor/Systemprogrammierung in Perl/examples/example17.pl new file mode 100644 index 0000000..2c935f5 --- /dev/null +++ b/Bachelor/Systemprogrammierung in Perl/examples/example17.pl @@ -0,0 +1,81 @@ +#!/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 = <*.pwd> ) { + open(WORDSLIST, $filename ) or die "Konnte Datei nicht öffnen!!\n"; + if ( -M WORDSLIST > 7 ) { + die "Wortliste ist älter wie 7 Tage."; + } + while( ) { + ( $myname, $word ) = split; + $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 +. + diff --git a/Bachelor/Systemprogrammierung in Perl/examples/example1b.pl b/Bachelor/Systemprogrammierung in Perl/examples/example1b.pl new file mode 100644 index 0000000..e53ed1f --- /dev/null +++ b/Bachelor/Systemprogrammierung in Perl/examples/example1b.pl @@ -0,0 +1,12 @@ +#!/Perl/bin/perl +use strict; +use warnings; + +my $name; + +print "Wie heißen Sie? "; +$name = ; +chomp $name; +print "Hallo $name! \n"; +print "hello world\n"; + diff --git a/Bachelor/Systemprogrammierung in Perl/examples/hello1.pl b/Bachelor/Systemprogrammierung in Perl/examples/hello1.pl new file mode 100644 index 0000000..0be0702 --- /dev/null +++ b/Bachelor/Systemprogrammierung in Perl/examples/hello1.pl @@ -0,0 +1,3 @@ +#!/Perl/bin + +print "hello world\n"; diff --git a/Bachelor/Systemprogrammierung in Perl/examples/hello2.pl b/Bachelor/Systemprogrammierung in Perl/examples/hello2.pl new file mode 100644 index 0000000..26c1e55 --- /dev/null +++ b/Bachelor/Systemprogrammierung in Perl/examples/hello2.pl @@ -0,0 +1,13 @@ +#!/Perl/bin +use strict; +use warnings; +# dieses Programm ist schon ein bisschen besser, +# aber der Kommmentar ist noch voellig sinnlos + +my $hello = "hello"; +my $world = "world"; + +# Hier wird gezeigt, dass man dem Print eine ganze Liste mitgeben kann, die +# dann nacheinander verarbeitet werden + +print $hello," ", $world, "\n"; diff --git a/Bachelor/Systemprogrammierung in Perl/examples/hello3.pl b/Bachelor/Systemprogrammierung in Perl/examples/hello3.pl new file mode 100644 index 0000000..6954c82 --- /dev/null +++ b/Bachelor/Systemprogrammierung in Perl/examples/hello3.pl @@ -0,0 +1,15 @@ +#!/Perl/bin + +# als erstes die notwendigen Sicherheitseinstellungen +use strict; +use warnings; + +my ($hello, $world); # Deklaration von 2 Variablen +$hello = "hello"; +$world = "hugo"; + +# Interpolation (Ersetzung) von Variablen funktioniert innerhalb von Strings +# die in doppelte Anfuehrungszeichen gesetzt sind + +print "$hello $world \n"; +exit; diff --git a/Bachelor/Systemprogrammierung in Perl/examples/hello4.pl b/Bachelor/Systemprogrammierung in Perl/examples/hello4.pl new file mode 100644 index 0000000..3631821 --- /dev/null +++ b/Bachelor/Systemprogrammierung in Perl/examples/hello4.pl @@ -0,0 +1,20 @@ +#!/Perl/bin/perl + +use strict; +use warnings; + +my ($hugo, $otto); + +$hugo = "hello"; +$otto = "world"; + +# Ausgabe eines Textes bis ein einzelnes END am Zeilenanfang steht + +print <