diff options
| author | Sven Eisenhauer <sven@sven-eisenhauer.net> | 2023-11-10 15:11:48 +0100 |
|---|---|---|
| committer | Sven Eisenhauer <sven@sven-eisenhauer.net> | 2023-11-10 15:11:48 +0100 |
| commit | 33613a85afc4b1481367fbe92a17ee59c240250b (patch) | |
| tree | 670b842326116b376b505ec2263878912fca97e2 /Bachelor/Systemprogrammierung in Perl/examples | |
| download | Studium-33613a85afc4b1481367fbe92a17ee59c240250b.tar.gz Studium-33613a85afc4b1481367fbe92a17ee59c240250b.tar.bz2 | |
Diffstat (limited to 'Bachelor/Systemprogrammierung in Perl/examples')
31 files changed, 1192 insertions, 0 deletions
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 = <STDIN>;
+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 = <STDIN>;
+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 = <STDIN>;
+ 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 = <STDIN>;
+ 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 = <STDIN>;
+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 = <STDIN>;
+ 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 = <STDIN>;
+ 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 = <STDIN>;
+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 = <STDIN>;
+ chomp ( $guess );
+
+ while ( $guess ne $secretword ) {
+ print "Falsch geraten, nochmal. Wie lautet das Geheimwort? ";
+ $guess = <STDIN>;
+ 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 = <STDIN>;
+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 = <STDIN>;
+ chomp ( $guess );
+
+ while ( $guess ne $secretword ) {
+ print "Falsch geraten, nochmal. Wie lautet das Geheimwort? ";
+ $guess = <STDIN>;
+ 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 = <STDIN>;
+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 = <STDIN>;
+ chomp ( $guess );
+
+ while ( $guess ne $secretword ) {
+ print "Falsch geraten, nochmal. Wie lautet das Geheimwort? ";
+ $guess = <STDIN>;
+ 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 = <STDIN>;
+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 = <STDIN>;
+ chomp ( $guess );
+
+ while ( $guess ne $secretword ) {
+ print "Falsch geraten, nochmal. Wie lautet das Geheimwort? ";
+ $guess = <STDIN>;
+ 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 = <STDIN>;
+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 = <STDIN>;
+ chomp ( $guess );
+
+ while ( $guess ne $secretword ) {
+ print "Falsch geraten, nochmal. Wie lautet das Geheimwort? ";
+ $guess = <STDIN>;
+ 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 = <STDIN>);
+ if ( $mfunc{$prompt} ){
+ $mfunc{$prompt}() ;
+ }
+ else {
+ &menu;
+ }
+}
+
+sub menu {
+ print <<END;
+ 1: Anzahl der Buecher
+ 2: durchschnittlicher Preis (arithmetisches Mittel)
+ 3: Anzahl der Buecher die teurer sind als der Durchschnitt
+ 4: Anzahl der Buecher, die preiswerter sind als der Durchschnitt
+ 5: Anzeige der Buchtitel und Preise die zwischen LOW und HIGH kosten.
+ 6: nächstes Buch
+ 7: letztes Buch
+ 8: Buch Titel suchen
+ 9: Exit
+END
+}
+
+sub openfile {
+ my ( $name,$Titel, $Autor, $Verlag,$Preis, $Bestell);
+ print " geben Sie den Filenamen der Buchliste ein: ";
+ $name = <STDIN>;
+ open ( FILE, $name ) or die "konnte $name nicht oeffnen";
+ while ( <FILE> ) {
+ ($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 = <STDIN>;
+ print "obere Preisschranke ? ";
+ $highLimit = <STDIN>;
+ 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 = <STDIN>);
+
+ 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 = <STDIN>;
+
+# 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 = <STDIN>;
+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 = <STDIN>;
+ chomp ( $guess );
+
+ while ( ! &good_word($name, $guess) ) {
+ print "\nFalsch geraten, nochmal. Wie lautet das Geheimwort? ";
+ $guess = <STDIN>;
+ 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 = <STDIN>;
+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 = <STDIN>;
+ chomp ( $guess );
+
+ while ( ! &good_word($name, $guess) ) {
+ print "Falsch geraten, nochmal. Wie lautet das Geheimwort? ";
+ $guess = <STDIN>;
+ chomp $guess;
+ }
+}
+exit;
+
+sub init_words {
+ my ($word, $myname);
+ open(WORDSLIST, "wordlist.txt");
+ while( $myname = <WORDSLIST> ) {
+ chomp( $myname );
+ $word = <WORDSLIST>;
+ 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 = <STDIN>;
+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 = <STDIN>;
+ chomp ( $guess );
+
+ while ( ! &good_word($name, $guess) ) {
+ print "Falsch geraten, nochmal. Wie lautet das Geheimwort? ";
+ $guess = <STDIN>;
+ 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 = <WORDSLIST> ) {
+ chomp( $myname );
+ $word = <WORDSLIST>;
+ 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 = <STDIN>;
+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 = <STDIN>;
+ chomp ( $guess );
+
+ while ( ! &good_word($name, $guess) ) {
+ print "Falsch geraten, nochmal. Wie lautet das Geheimwort? ";
+ $guess = <STDIN>;
+ 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 = <WORDSLIST> ) {
+ chomp( $myname );
+ $word = <WORDSLIST>;
+ 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 = <STDIN>;
+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 = <STDIN>;
+ chomp ( $guess );
+
+ while ( ! &good_word($name, $guess) ) {
+ print "Falsch geraten, nochmal. Wie lautet das Geheimwort? ";
+ $guess = <STDIN>;
+ 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 = <WORDSLIST> ) {
+ chomp( $myname );
+ $word = <WORDSLIST>;
+ 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 = <STDIN>;
+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 = <STDIN>;
+ chomp ( $guess );
+
+ while ( ! &good_word($name, $guess) ) {
+ print "Falsch geraten, nochmal. Wie lautet das Geheimwort? ";
+ $guess = <STDIN>;
+ 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 = <WORDSLIST> ) {
+ chomp( $myname );
+ $word = <WORDSLIST>;
+ 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 = <STDIN>;
+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 = <STDIN>;
+ chomp ( $guess );
+
+ while ( ! &good_word($name, $guess) ) {
+ print "Falsch geraten, nochmal. Wie lautet das Geheimwort? ";
+ $guess = <STDIN>;
+ 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 = <WORDSLIST> ) {
+ chomp( $myname );
+ $word = <WORDSLIST>;
+ 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 = <STDIN>;
+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 = <STDIN>;
+ chomp ( $guess );
+
+ while ( ! &good_word($name, $guess) ) {
+ print "Falsch geraten, nochmal. Wie lautet das Geheimwort? ";
+ $guess = <STDIN>;
+ 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( <WORDSLIST> ) {
+ ( $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 = <STDIN>;
+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 <<LST;
+Dies ist ein längerer Text
+in den wir ein $hugo
+und dann später ein $otto
+eingefügt haben
+LST
+
+ exit;
diff --git a/Bachelor/Systemprogrammierung in Perl/examples/lastdb.dir b/Bachelor/Systemprogrammierung in Perl/examples/lastdb.dir new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Bachelor/Systemprogrammierung in Perl/examples/lastdb.dir diff --git a/Bachelor/Systemprogrammierung in Perl/examples/lastdb.pag b/Bachelor/Systemprogrammierung in Perl/examples/lastdb.pag Binary files differnew file mode 100644 index 0000000..58f9add --- /dev/null +++ b/Bachelor/Systemprogrammierung in Perl/examples/lastdb.pag diff --git a/Bachelor/Systemprogrammierung in Perl/examples/pass.pwd b/Bachelor/Systemprogrammierung in Perl/examples/pass.pwd new file mode 100644 index 0000000..82da257 --- /dev/null +++ b/Bachelor/Systemprogrammierung in Perl/examples/pass.pwd @@ -0,0 +1,2 @@ +bilbo beutlin
+frodo beutlin
\ No newline at end of file diff --git a/Bachelor/Systemprogrammierung in Perl/examples/pass.txt b/Bachelor/Systemprogrammierung in Perl/examples/pass.txt new file mode 100644 index 0000000..d2fcdd4 --- /dev/null +++ b/Bachelor/Systemprogrammierung in Perl/examples/pass.txt @@ -0,0 +1,4 @@ +bilbo
+beutlin
+frodo
+beutlin
\ No newline at end of file diff --git a/Bachelor/Systemprogrammierung in Perl/examples/printdb.pl b/Bachelor/Systemprogrammierung in Perl/examples/printdb.pl new file mode 100644 index 0000000..8b4046f --- /dev/null +++ b/Bachelor/Systemprogrammierung in Perl/examples/printdb.pl @@ -0,0 +1,16 @@ +#!/Perl/bin/perl
+my %last_good;
+my ($name, $hours, $when);
+
+dbmopen( %last_good, "lastdb", 0666 );
+
+foreach $name (sort keys(%last_good)) {
+ $when = $last_good{ $name };
+ $hours = int ((time - $when) / (3600*24));
+ write;
+}
+
+format STDOUT =
+User @<<<<<<<<<<<: Der letzte richtige Tip war vor @<<<< Tagen.
+$name, $hours
+.
diff --git a/Bachelor/Systemprogrammierung in Perl/examples/tmon.out b/Bachelor/Systemprogrammierung in Perl/examples/tmon.out new file mode 100644 index 0000000..cd19765 --- /dev/null +++ b/Bachelor/Systemprogrammierung in Perl/examples/tmon.out @@ -0,0 +1,29 @@ +#fOrTyTwO
+$hz=1000;
+$XS_VERSION='DProf 20030813.00';
+# All values are given in HZ
+$over_utime=440; $over_stime=0; $over_rtime=440;
+$over_tests=10000;
+$rrun_utime=11370; $rrun_stime=0; $rrun_rtime=11370;
+$total_marks=12
+
+PART2
+& 2 main BEGIN
++ 2
+@ 50 0 50
+& 3 strict bits
++ 3
+- 3
+& 4 strict import
++ 4
+- 4
+- 2
++ 2
+& 5 warnings BEGIN
++ 5
+- 5
+& 6 warnings import
++ 6
+- 6
+- 2
+@ 11320 0 11320
diff --git a/Bachelor/Systemprogrammierung in Perl/examples/wordlist.pwd b/Bachelor/Systemprogrammierung in Perl/examples/wordlist.pwd new file mode 100644 index 0000000..9391c61 --- /dev/null +++ b/Bachelor/Systemprogrammierung in Perl/examples/wordlist.pwd @@ -0,0 +1,4 @@ +fred Kamel
+barney Lama
+betty Auster
+wilma Auster
diff --git a/Bachelor/Systemprogrammierung in Perl/examples/wordlist.txt b/Bachelor/Systemprogrammierung in Perl/examples/wordlist.txt new file mode 100644 index 0000000..c4fa496 --- /dev/null +++ b/Bachelor/Systemprogrammierung in Perl/examples/wordlist.txt @@ -0,0 +1,8 @@ +fred
+Kamel
+barney
+Lama
+betty
+Auster
+wilma
+Auster
|
