1. Frage
Lösung
#!/usr/bin/perl #Aufgabe 7.1 #Fragt den Nutzer, wie oft der Text "Alles Gute zum Nikolaus!" ausgegeben werden soll #und gibt den Text auf der Konsole und in die Datei nikolaus.txt aus use strict; use warnings; { my ($eingabe,$zaehler); my $ausgabe = "nikolaus.txt"; $zaehler=0; open (AUSGABE, ">$ausgabe"); print "Geben Sie ein, wie oft Sie zum Nikolaus beglückwünscht werden möchten >>> "; $eingabe=<>; chomp($eingabe); while ($zaehler < $eingabe){ print "Alles Gute zum Nikolaus!\n"; print AUSGABE "Alles Gute zum Nikolaus!\n"; $zaehler++; } close (AUSGABE); }
2. Frage
Lösung for-Schleife
#!/usr/bin/perl #Aufgabe 7.2 #Erstellt eine Frequenzliste von artikel.txt (mit for-Schleife) use strict; use warnings; { my ($artikel,$ausgabe,$zeile,$wort,$i,$anzahlwoerter); my %lexikon; my @wort; $artikel = "artikel.txt"; $ausgabe = "hash_wortliste.txt"; open (EINGABE, $artikel); open (AUSGABE, ">$ausgabe"); while ($zeile = <EINGABE>){ chomp ($zeile); @wort = split (/[\p{Z}\p{P}]+/, $zeile); $anzahlwoerter = scalar(@wort); for ($i=0;$i<$anzahlwoerter;$i++){ $lexikon{$wort[$i]}++ ; } } foreach $wort(keys %lexikon){ print AUSGABE "Das Wort \"$wort\" kommt $lexikon{$wort}mal vor.\n"; } close (EINGABE); close (AUSGABE); }
Lösung foreach-Schleife
#!/usr/bin/perl #Aufgabe 7.2 #Erstellt eine Frequenzliste von artikel.txt (mit foreach-Schleife) use strict; use warnings; { my ($artikel,$ausgabe,$zeile,$wort); my %lexikon; my @woerter; $artikel = "artikel.txt"; $ausgabe = "hash_wortliste.txt"; open (EINGABE, $artikel); open (AUSGABE, ">$ausgabe"); while ($zeile = <EINGABE>){ chomp ($zeile); @woerter = split (/[\p{Z}\p{P}]+/, $zeile); foreach $wort(@woerter){ $lexikon{$wort}++; } } foreach $wort(keys %lexikon){ print AUSGABE "Das Wort \"$wort\" kommt $lexikon{$wort}mal vor.\n"; } close (EINGABE); close (AUSGABE); }
3. Frage
Lösung
#!/usr/bin/perl #Aufgabe 7.3 #Ermittelt die Anzahl an unterschiedlichen Woertern in artikel.txt use strict; use warnings; { my ($artikel,$zeile,$wort,$anzahlelem); my %lexikon; my @woerter; $artikel = "artikel.txt"; open (EINGABE, $artikel); while ($zeile = <EINGABE>){ chomp ($zeile); @woerter = split (/[\p{Z}\p{P}]+/, $zeile); foreach $wort(@woerter){ $lexikon{$wort}++; } } $anzahlelem = scalar(keys%lexikon); print "In $artikel kommen $anzahlelem unterschiedliche Wörter vor.\n"; close (EINGABE); }
4. Frage
Lösung
#!/usr/bin/perl #Aufgabe 7.4 #Fragt den Benutzer nach einem Wort und gibt dessen Vorkommen in artikel.txt aus use strict; use warnings; { my ($artikel,$zeile,$wort,$eingabe,$lceingabe,$uceingabe); my %lexikon; my @woerter; $artikel = "artikel.txt"; open (EINGABE, $artikel); while ($zeile = <EINGABE>){ chomp ($zeile); @woerter = split (/[\p{Z}\p{P}]+/, $zeile); foreach $wort(@woerter){ if (defined($lexikon{$wort})){ $lexikon{$wort}++; }else{ $lexikon{$wort} = 1; } } } print"Bitte geben Sie ein Wort ein >>> "; $eingabe=<>; chomp($eingabe); $lceingabe = lc($eingabe); $uceingabe = ucfirst($eingabe); if ((defined($lexikon{$uceingabe}))||(defined($lexikon{$lceingabe}))){ print "Dieses Wort kommt in der Datei artikel.txt ",$lexikon{$uceingabe} + $lexikon{$lceingabe},"mal vor.\n"; print "$lexikon{$uceingabe}mal in grossgeschriebener Variante\n" if(exists $lexikon{$uceingabe}); print "$lexikon{$lceingabe}mal in kleingeschriebener Variante.\n" if(exists $lexikon{$lceingabe}); }else{ print "Dieses Wort kommt in der Datei artikel.txt nicht vor.\n"; } close (EINGABE); }
5. Frage
Lösung
#!/usr/bin/perl #Aufgabe 7.5 #Sortiert die Frequenzliste nach Häufigkeit (aufsteigend) use strict; use warnings; { my ($artikel,$ausgabe,$zeile,$wort); my %lexikon; my @woerter; $artikel = "artikel.txt"; open (EINGABE, $artikel); while ($zeile = <EINGABE>){ chomp ($zeile); @woerter = split (/[\p{Z}\p{P}]+/, $zeile); foreach $wort(@woerter){ $lexikon{$wort}++; } } #Sortieren numerisch aufsteigend foreach $wort(sort {$lexikon{$a}<=>$lexikon{$b}} keys %lexikon){ print "Das Wort \"$wort\" kommt $lexikon{$wort}mal vor.\n"; } close (EINGABE); }
6. Frage
Lösung
#!/usr/bin/perl #Aufgabe 7.6 #Sortiert die Frequenzliste nach Häufigkeit (absteigend) use strict; use warnings; { my ($artikel,$ausgabe,$zeile,$wort); my %lexikon; my @woerter; $artikel = "artikel.txt"; open (EINGABE, $artikel); while ($zeile = <EINGABE>){ chomp ($zeile); @woerter = split (/[\p{Z}\p{P}]+/, $zeile); foreach $wort(@woerter){ $lexikon{$wort}++; } } # Sortieren numerisch absteigend foreach $wort(sort {$lexikon{$b}<=>$lexikon{$a}} keys %lexikon){ print "Das Wort \"$wort\" kommt $lexikon{$wort}mal vor.\n"; } close (EINGABE); }
7. Frage
Lösung
#!/usr/bin/perl #Aufgabe 7.7 #Gibt die drei Woerter aus, die am häufigsten vorkommen use strict; use warnings; { my ($artikel,$zeile,$wort,$zaehler); my %lexikon; my @woerter; $artikel = "artikel.txt"; $zaehler = 0; open (EINGABE, $artikel); while ($zeile = <EINGABE>){ chomp ($zeile); @woerter = split (/[\p{Z}\p{P}]+/, $zeile); foreach $wort(@woerter){ $lexikon{$wort}++; } } foreach $wort(sort {$lexikon{$b}<=>$lexikon{$a}} keys %lexikon){ print "Das Wort \"$wort\" kommt $lexikon{$wort}mal vor.\n" if ($zaehler<3); $zaehler++; } print "Dies sind die drei häufigsten Woerter.\n"; close (EINGABE); }
8. Frage
Lösung
#!/usr/bin/perl #Aufgabe 7.8 #Gibt die zehn häufigsten Buchstaben aus use strict; use warnings; { my ($artikel,$ausgabe,$zeile,$letter,$elem,$zaehler); my %lexikon; my @buchstaben; $artikel = "artikel.txt"; $zaehler = 0; open (EINGABE, $artikel); while ($zeile = <EINGABE>){ chomp ($zeile); @buchstaben = split (//, $zeile); foreach $letter(@buchstaben){ if ($letter =~ /\p{L}/){ $lexikon{$letter}++; } } } foreach $letter(sort {$lexikon{$b}<=>$lexikon{$a}} keys %lexikon){ print "Der Buchstabe \"$letter\" kommt $lexikon{$letter}mal vor.\n" if ($zaehler<10); $zaehler++; } close (EINGABE); }