1. Frage
Lösung
#!/usr/bin/perl -w # "Ich bin durch 3 teilbar" Programm use strict; { my $i; for ($i=0; $i<=30; $i++) { if ($i % 3 == 0 && $i!=0) { print "\n$i : Ich bin durch 3 teilbar.\n"; } else { print "$i,"; } } print "\n"; }
2. Frage
Lösung mit for-Schleife.
#!/usr/bin/perl -w # "Ich bin durch x teilbar, der Multiplikator ist y." Programm # for-Schleife use strict; { my $i; my $teiler; print "Bitte geben Sie den Teiler ein >"; chomp($teiler=<>); for ($i=0; $i<=30; $i++) { if ($i % $teiler == 0 && $i!=0) { print "\n$i : Ich bin durch $teiler teilbar, der Multiplikator ist ",$i/$teiler,".\n"; } else { print "$i,"; } } print "\n"; }
Lösung mit foreach-Schleife.
#!/usr/bin/perl -w # "Ich bin durch x teilbar, der Multiplikator ist y." Programm # foreach-Schleife use strict; { my $i; my $teiler; print "Bitte geben Sie den Teiler ein >"; chomp($teiler=<>); foreach $i (0..30){ if ($i % $teiler == 0 && $i!=0 ){ print "\n$i : ich bin durch $teiler teilbar. der Multiplikator ist ", $i/$teiler, "\n"; } else { print "$i, "; } } print "\n"; }
Lösung mit Speziele Variable $_ .
#!/usr/bin/perl -w # "Ich bin durch x teilbar, der Multiplikator ist y." Programm # Test Speziele Variable $_ use strict; { my $teiler; print "Bitte geben Sie den Teiler ein >\n"; chomp($teiler = <>); foreach (0..30) { if ($_ % $teiler == 0 && $_!=0 ){ print "\n$_ : ich bin durch $teiler teilbar. der Multiplikator ist ", $_/$teiler, "\n"; } else { print "$_, "; } } print "\n"; }
3. Frage
Lösung
#!/usr/bin/perl #Aufgabe 6.3 #Liest eine Zeile ein und gibt nur die Vokale aus use strict; { my $zeile; my (@buchstaben,@vokale); my $buchstaben; my $vokal; print"Bitte geben Sie eine Zeile ein >>> "; $zeile=<>; chomp($zeile); $zeile=lc($zeile); @buchstaben=split(//,$zeile); @vokale=("a","e","i","o","u"); foreach $buchstaben(@buchstaben){ foreach $vokal(@vokale){ if ($buchstaben eq $vokal){ print"$buchstaben"; } } } }
4. Frage
Lösung
~ $ lynx -dump http://sz-magazin.sueddeutsche.de/texte/anzeigen/36659 > artikel.txt
oder Copy/Paste.
5. Frage
Lösung
#!/usr/bin/perl #Aufgabe 6.5 #Liest den Text aus einer Datei und gibt das erste Wort jeder Zeile aus use strict; use warnings; { my $artikel = "artikel.txt"; my $zeile; my @woerter; my $woerter; open(ARTIKEL,$artikel); while($zeile=<ARTIKEL>){ chomp $zeile; @woerter=split(/[., ;:]+/,$zeile); if (defined($woerter[0])){ print "$woerter[0]\n"; } } close (ARTIKEL); }
6. Frage
Lösung
#!/usr/bin/perl -w # Aus artikel.txt den Text einlesen und eine einspaltige Liste erzeugen. # Die Liste in die Datei 'wortliste.txt' speichern. use strict; { my $file_input = "artikel.txt"; my $file_output= "wortliste.txt"; my $zeile; my @worter; my $element; open (EINGABE, $file_input); open (AUSGABE, ">$file_output"); while ($zeile=<EINGABE>) { chomp($zeile); @worter=split(/[., ;:]+/,$zeile); foreach $element (@worter){ print "$element\n"; print AUSGABE "$element\n"; } } close EINGABE; close AUSGABE; }
7. Frage
Lösung
#!/usr/bin/perl -w # Aus 'artikel.txt' den Text einlesen und eine einspaltige Liste erzeugen. # Die Liste in die Datei 'wortliste.txt' speichern. # Am Ende der Datei 'wortliste.txt' die Anzahl der Wörter, der Zeilen und Zeichen speichern. use strict; { my $file_input = "artikel.txt"; my $file_output= "wortliste.txt"; my $zeile; my @worter; my $element; my ($anz_worter, $anz_zeilen, $anz_zeichen); $anz_worter=0; $anz_zeilen=0; $anz_zeichen=0; open (EINGABE,$file_input); open (AUSGABE,">$file_output"); while ($zeile=<EINGABE>) { chomp($zeile); $anz_zeilen++; @worter=split(/[ ]+/,$zeile); foreach $element (@worter){ $anz_worter++; $anz_zeichen += length($element); print AUSGABE "$element\n"; } } print "In $file_input sind $anz_zeilen Zeilen, $anz_worter Wörter und $anz_zeichen Zeichen.\n"; print AUSGABE "In $file_input sind $anz_zeilen Zeilen, $anz_worter Wörter und $anz_zeichen Zeichen.\n"; close EINGABE; close AUSGABE; }
8. Frage
Lösung
~ $ wc artikel.txt
9. Frage
Lösung
#!/usr/bin/perl -w # Suche nach einem Wort in artikel.txt use strict; { my $file_input = "artikel.txt"; my $file_output= "wortliste.txt"; my $zeile; my @worter; my $element; my $anz_worter = 0; my $anz_zeilen = 0; my $anz_zeichen = 0; my $anz_wort_eingabe = 0; my $wort_eingabe; print "Bitte geben Sie das zusuchende Wort >>> "; chomp($wort_eingabe=<>); open (EINGABE,$file_input); open (AUSGABE,">$file_output"); while ($zeile=<EINGABE>) { chomp($zeile); $anz_zeilen++; @worter=split(/[ ]+/,$zeile); $anz_worter += @worter; foreach $element (@worter){ $anz_wort_eingabe++ if (lc($wort_eingabe) eq lc($element)); $anz_zeichen += length($element); print AUSGABE "$element\n"; } } print "In diesem text sind $anz_zeilen Zeilen, $anz_worter Wörter und $anz_zeichen Zeichen.\n"; print "Wir haben in der Datei \"$file_input\" nach dem Wort \"$wort_eingabe\" gesucht.\n"; print "Ihr Wort \"$wort_eingabe\" kommt $anz_wort_eingabe mal in der Datei vor.\n"; print AUSGABE "In diesem text sind $anz_zeilen Zeilen, $anz_worter Wörter und $anz_zeichen Zeichen.\n"; print AUSGABE "Wir haben in der Datei \"$file_input\" nach dem Wort \"$wort_eingabe\" gesucht.\n"; print AUSGABE "Ihr Wort \"$wort_eingabe\" kommt $anz_wort_eingabe mal in der Datei vor.\n"; close EINGABE; close AUSGABE; }
10. Frage
Lösung
~ $ cat artikel.txt | tr '[:upper:]' '[:lower:]' | tr -s ' ' '\n' | sort | uniq -c | sort -nr | head -5
58 die
55 *
39 der
39 das
38 und
Output Aufgabe 6.9:
Bitte geben Sie das zusuchende Wort >>> die In diesem text sind 565 Zeilen, 3227 Wörter und 21648 Zeichen. Wir haben in der Datei "artikel.txt" nach dem Wort "die" gesucht. Ihr Wort "die" kommt 58 mal in der Datei vor.
Heufigkei eines Wortes (z.B: "die") mit Hilfe von UNIX-Befehlen:
~ $ cat artikel.txt | tr '[:upper:]' '[:lower:]' | tr -s ' ' '\n' | sort | uniq -c | sort -n | grep "\sdie$" 58 die
11. Frage
Lösung
Die Kodierung unterscheidet sich da wo die Umlaute sind. Punct c). od utf8.txt od iso_latin.txt a) Anton UTF-8: 0000000 067101 067564 000156 0000005 ISO-Latin-1: 0000000 067101 067564 000156 0000005 b) Dez. 2010, 12:45 UTF-8: 0000000 062504 027172 031040 030460 026060 030440 035062 032464 0000020 ISO-Latin-1: 0000000 062504 027172 031040 030460 026060 030440 035062 032464 0000020 c) äää üüü ööö UTF-8: 0000000 122303 122303 122303 141440 141674 141674 020274 133303 0000020 133303 133303 0000024 ISO-Latin-1: 0000000 162344 020344 176374 020374 173366 000366 0000013