05.11.2013 Aufrufe

Einführung in den Perl Debugger (PDF) - Thomas Fahle

Einführung in den Perl Debugger (PDF) - Thomas Fahle

Einführung in den Perl Debugger (PDF) - Thomas Fahle

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

<strong>Perl</strong><br />

Erste Schritte - Der <strong>Debugger</strong> als<br />

<strong>Perl</strong>-Shell<br />

Für die ersten Schritte mit dem <strong>Perl</strong>-<strong>Debugger</strong> bietet sich die<br />

Nutzung als <strong>Perl</strong>-Shell an.<br />

perl -d -e 0<br />

... Ausgabe unterdrückt<br />

ma<strong>in</strong>::(-e:1): 0<br />

DB<br />

Der <strong>Debugger</strong> meldet sich mit e<strong>in</strong>em eigenem Prompt<br />

(DB) und wartet auf die E<strong>in</strong>gabe e<strong>in</strong>es Kommandos. Zum<br />

Been<strong>den</strong> des <strong>Debugger</strong>s dient das Kommando q, Hilfe erhält<br />

man über das Kommando h.<br />

Code e<strong>in</strong>geben<br />

Nun kann beliebiger <strong>Perl</strong>-Code e<strong>in</strong>geben wer<strong>den</strong>.<br />

perl -d -e 0<br />

DB pr<strong>in</strong>t “Hallo Foo-Magaz<strong>in</strong>”<br />

Hallo Foo-Magaz<strong>in</strong><br />

DB pr<strong>in</strong>t 6 * 7; pr<strong>in</strong>t “\n”; pr<strong>in</strong>t 6 x 7<br />

42<br />

6666666<br />

Das Zeilenende wird als Anweisungsende aufgefasst, das übliche<br />

Semikolon am Zeilenende kann daher entfallen. Mehrere<br />

Anweisungen <strong>in</strong> e<strong>in</strong>er Zeile müssen allerd<strong>in</strong>gs durch e<strong>in</strong><br />

Semikolon getrennt wer<strong>den</strong>.<br />

Cont<strong>in</strong>uation L<strong>in</strong>es (Fortführungszeilen)<br />

Falls mehr als e<strong>in</strong>e Zeile zur E<strong>in</strong>gabe des Codes benötigt wird,<br />

muss das Zeilenende mit e<strong>in</strong>em \ maskiert wer<strong>den</strong>.<br />

1<br />

2<br />

DB foreach my $number ( 1 .. 2 ) { \<br />

cont: pr<strong>in</strong>t “$number\n” \<br />

cont: }<br />

Variablen<strong>in</strong>halte ausgeben mit p<br />

Das Kommando p erlaubt die e<strong>in</strong>fache Ausgabe der Werte<br />

von Variablen.<br />

DB $scalar = “Text”<br />

DB @array = qw(e<strong>in</strong>s zwei)<br />

DB %hash = ( ‘a’ => ‘1’, ‘b’ => ‘2’)<br />

DB p $scalar<br />

Text<br />

DB p @array<br />

e<strong>in</strong>szwei<br />

DB p %hash<br />

a1b2<br />

Datenstrukturen und Variablen<strong>in</strong>halte mit x anzeigen<br />

Die Ausgabe von p ist für skalare Variablen durchaus brauchbar.<br />

E<strong>in</strong>e übersichtlichere Darstellung lässt sich mit dem<br />

Kommando x erzeugen.<br />

E<strong>in</strong>fache Variablen und Datenstrukturen<br />

Betrachten wir zunächst e<strong>in</strong>mal die grundlegen<strong>den</strong> e<strong>in</strong>fachen<br />

<strong>Perl</strong>-Datenstrukturen.<br />

Das Kommando x evaluiert se<strong>in</strong>e Parameter im Listenkontext.<br />

DB x $scalar<br />

0 ‘Text’<br />

Bei skalaren Variablen wird e<strong>in</strong>e Liste mit e<strong>in</strong>em Element zurückgegeben.<br />

DB x @array<br />

0 ‘e<strong>in</strong>s’<br />

1 ‘zwei’<br />

Bei Array-Variablen wird e<strong>in</strong>e Liste der Elemente mit dem<br />

jeweiligen Index zurückgegeben.<br />

DB x %hash<br />

0 ‘a’<br />

1 1<br />

2 ‘b’<br />

3 2<br />

Auch bei Hashes wird e<strong>in</strong>e Liste mit <strong>den</strong> entsprechen<strong>den</strong> Indizes<br />

ausgegeben.<br />

Wenn man jedoch dem Kommando x e<strong>in</strong>e Referenz auf e<strong>in</strong>e<br />

Variable übergibt, wird die Ausgabe wesentlich <strong>in</strong>formativer.<br />

DB x \$scalar<br />

0 SCALAR(0x8427f00)<br />

-> ‘Text’<br />

DB x \@array<br />

0 ARRAY(0x8427e1c)<br />

0 ‘e<strong>in</strong>s’<br />

1 ‘zwei’<br />

DB x \%hash<br />

0 HASH(0x8427d38)<br />

‘a’ => 1<br />

‘b’ => 2<br />

36

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!