1 Tagesüberblick 7 Lösung Hausaufgabe/Fragen mehrdimensionale Datenstrukturen Module Fehlersuche...

Preview:

Citation preview

1

Tagesüberblick 7

• Lösung Hausaufgabe/Fragen• mehrdimensionale Datenstrukturen• Module• Fehlersuche• Zusammenfassung• Feedback

2

Mehrdimensionale Datenstrukturen

• List of Lists (LoL)• Hash of Hashs (HoH)• alle Mischformen möglich

• Zu beachten:Direktes Ausdrucken nicht möglich

3

List of Listsfor ($i=0;$i<3;$i++){ for ($j=0;$j<3;$j++){ $abc[$i][$j]=$i*$j}}$abc[2][0]=5;

for ($i=0;$i<3;$i++){ for ($j=0;$j<3;$j++){ print "$abc[$i][$j] "} print "\n"}

4

Ergebnis

0 0 0 0 1 2 5 2 4

5

List of Lists (Listenverarbeitung)@abc=(["ich","du","er"], ["Karl","Fritz"], [3,2,1], [1,2,"a","b"]); foreach $a(@abc){ @b=@{$a}; print "@b\n";}

6

List of Lists

@bce=("Cola","Fanta");$abc[5]=[@bce];$abc[7][1]=5;

foreach $a(@abc){ @b=@{$a}; print "@b\n";}

7

Ergebnis: Vorsicht Lücken (perl -w)

ich du erKarl Fritz3 2 11 2 a bUse of uninitialized value at test.pl line 10.Cola FantaUse of uninitialized value at test.pl line 10.Use of uninitialized value at test.pl line 11. 5

8

Behandlung undefinierter Werte

@bce=("Cola","Fanta");$abc[5]=[@bce];$abc[7][1]=5;

foreach $a(@abc){ if(defined($a)){ print "@{$a}\n"}}

9

Warum das?

ich du erKarl Fritz3 2 11 2 a bCola FantaUse of uninitialized value at test.pl line 12. 5

10

Lückenbehandlung komplett@bce=("Cola","Fanta");$abc[5]=[@bce];$abc[7][1]=5;

foreach $a(@abc){ if(defined($a)){ foreach $b(@{$a}){ if (defined($b)){print "$b "}} print "\n"}}

11

Aufgabe 7-1

Lesen Sie die Datei daten7-1.txt ein.In jeder Zeile sind 3 Zahlen, jeweils durch

Leerzeichen getrennt, enthalten.Speichern Sie diese Zahlen einzeln in einer List of

Lists (LoL) ab.Geben Sie anschließend die LoL aus.

12

Aufgabe 7-2

Lesen Sie die Datei daten7-1.txt ein.In jeder Zeile sind 3 Zahlen, jeweils durch Leerzeichen

getrennt, enthalten.Speichern Sie diese Zahlen einzeln in einer List of Lists

(LoL) ab.Multiplizieren Sie in einem Unterprogramm die Elemente

der Lol jeweils mit sich selbst.Geben Sie anschließend die LoL in die Datei out7-1.txt aus.

13

Dateiinformationen

$_="bla.txt";if (-e) {}; # existiertif (-z) {}; # Laenge 0if (-s) {}; # Laenge nicht 0if (-f) {}; # normale Datei (file)if (-d) {}; # Verzeichnis (directory)

14

File::Find#! perl -wsub gefunden{ print "$File::Find::name\n"}

use File::Find;print 'Ab welchem Verzeichnis soll gesucht werden?';$startdir=<STDIN>;chomp ($startdir);find(\&gefunden,$startdir);

15

File::Find (globale Var.)sub gefunden{if (-d) { push (@list, $File::Find::name.'/',"\n")}else {push (@list, $File::Find::name,"\n")}} # Achtung: große Systeme => @list großuse File::Find;print 'Ab welchem Verzeichnis soll gesucht werden?';$startdir=<STDIN>;chomp ($startdir);find(\&gefunden,$startdir);print @list;

16

Aufgaben

7-3 Suchen Sie innerhalb des Dateibaumes alle Dateien, deren Name die Sequenz win enthält. Geben Sie die Dateinamen aus.

7-4 Suchen Sie innerhalb des Dateibaumes alle Dateien, in deren Inhalt die Sequenz c: vorkommt. Geben Sie die Dateinamen aus.

17

Fehlersuche(1)

#! perl -wuse diagnostics;use strict;

18

Fehlersuche (2)

$test=1;...if($test) print ......if($test) print ....

19

Kontrolle des Dateiöffnens

open(XYZ,$file) || die "Oeffnen: $file $!\n";# Dateiname, Ursache

open(XYZ,$file) || die "Oeffnen: $file $!";# Dateiname, Ursache, rufendes Programm, Zeile

20

Häufige Schnitzer

• print STDOUT,$a;• Verwenden der falschen Vergleichsoperatoren (==

statt eq)• Semikolon vergessen• Bei Blöcken geschweifte Klammern vergessen• Bei local Vererbung vergessen• Klammerebenen durcheinander bringen• Durcheinanderbringen von $,@,%,&

21

Zusammenfassung I

• Philosophie von PERL• Bildschirmausgabe• Variablen und ihre Benutzung

Skalare, Felder ( Vektoren, Listen )• Einlesen größerer Datenmengen• Schleifen• Vergleiche• Wahrheit

22

Zusammenfassung II

• Mustervergleiche• Weitere Textfunktionen tr,split ...• Assoziative Vektoren• Spezielle Variable• Hier-Dokument• Unterprogramme• Mehrdimensionale Felder• Module

23

Feedback

• Was hat Ihnen gefallen?

• Was hat Sie gestört?

• Was hat Ihnen gefehlt?

24

Fragen, Anregungen und Hinweise

Bitte an mich senden:

lu.schreiber@arcor.de

Vielen Dank

Recommended