From ss5 at renormalist.net Wed May 2 08:10:47 2012 From: ss5 at renormalist.net (Steffen Schwigon) Date: Wed, 2 May 2012 16:10:47 +0100 (BST) Subject: [Dresden-pm] Dresden Perl Mongers Treffen Mai 2012 Message-ID: <20120502151047.473363F236B@h132974.serverkompetenz.net> Hi! Am Donnerstag treffen sich wieder die Dresden Perl Mongers. Donnerstag, den 03. Mai 2012 20.30 Uhr Kneipe "Terasse am Bischofsplatz" Bischofsweg 2 01097 Dresden Wir reden und hacken üblicherweise an unserem eigenen Kram rum und bieten ernsthaften Support rund um Perl-Einstiegsthemen wie * Code-Reviews * erstes CPAN-Modul bauen * Updates zu Perl[56], Parrot, Rakudo, Perlworkshop, YAPC und für Fortgeschrittene * Trost * Folklore * misc & etc Anfahrt, Termine, Themen manchmal auch hier: * http://dresden-pm.org/PM/TermineTreffen Jeder ist eingeladen. Grüße, Steffen -- Steffen Schwigon Dresden Perl Mongers From oeste.sebastian at googlemail.com Sun May 6 05:09:36 2012 From: oeste.sebastian at googlemail.com (Sebastian Oeste) Date: Sun, 6 May 2012 14:09:36 +0200 Subject: [Dresden-pm] Datei Lesen plus schreiben Message-ID: <20120506120934.GA3177@googlemail.com> Hallo, Ich wollte ein Perl Skript schreiben mit dem ich eine bestimmte Zeile aus einer Datei löschen kann. #! /usr/bin/perl -w use strict; use warnings; use feature "say"; my ($fh, $i); open ($fh, "+>", "test.txt") || die qq/cannot open $!/; my @lines = (); $i = 0; while ( <$fh> ) { push (@lines, $_) unless $i == 2; $i ++; } for (@lines) { print $fh "$_\n" ; } close ($fh); leider funktioniert es nicht mit "+>" die Datei zum lesen und schreiben zu öffnen. Damit das Skript funktioniert muss ich die Datei erst zum lesen öffnen, nach dem einlesen wieder schließen und dann zum schreiben öffnen. Warum funktioniert das nicht ? Habt ihr ein Tip für mich wie das noch eleganter geht ? Danke im Vorraus, Basti From maik at mm-double.de Sun May 6 05:30:03 2012 From: maik at mm-double.de (Maik Hentsche) Date: Sun, 6 May 2012 14:30:03 +0200 Subject: [Dresden-pm] Datei Lesen plus schreiben In-Reply-To: <20120506120934.GA3177@googlemail.com> References: <20120506120934.GA3177@googlemail.com> Message-ID: <20120506143003.63178b23@zeus> Sebastian Oeste wrote: > > Hallo, > > Ich wollte ein Perl Skript schreiben mit dem ich eine bestimmte Zeile > aus einer Datei löschen kann. > [..] > Warum funktioniert das nicht ? Aus mehreren Gründen. Kommentare inline. > #! /usr/bin/perl -w > > use strict; > use warnings; use warnings und perl -w aktiviert beides Warnungen. Das use macht es lokal, das -w global. Deshalb solltest du ersteres bevorzugen, sonst kriegst du Warnungen, wenn du ein Modul nutzt, das nicht warning-sicher ist. > use feature "say"; > > my ($fh, $i); > open ($fh, "+>", "test.txt") || die qq/cannot open $!/; perl -f open sagt: "You can put a '+' in front of the '>' or '<' to indicate that you want both read and write access to the file; thus '+<' is almost always preferred for read/write updates--the '+>' mode would clobber the file first." Der letzte Teil ist wichtig. Mit +> wird dein File erstmal kaputt gemacht. Angenommen, das würde funktionieren, wie du willst, dann... > my @lines = (); > $i = 0; > while ( <$fh> ) > { > push (@lines, $_) unless $i == 2; > $i ++; > } ... wärst du hier am Ende des Files. Du müsstest den Filepointer erstmal zurück auf den Anfang setzen. seek $fh, 0, 0; ABER: Das hilft dir auch nicht, so wie du willst. Angenommen, dein File hat 6 Zeilen. Dann würdest du nun die ersten 5 Zeilen mit Zeile 1,2,3,4,5,6 überschreiben und Zeile 6 bliebe bestehen (und wäre damit doppelt). > for (@lines) > { > print $fh "$_\n" ; Damit verdoppelt du die Newline am Ende der Zeile, denn du hast die oben mit gelesen, ohne sie zu entfernen. > } > > close ($fh); > Habt ihr ein Tip für mich wie das noch eleganter geht ? Nur lesend öffnen, dann deine Version um die Zeilen in ein Array zu lesen. Datei nur zum Schreiben öffnen und los schreiben. so long Maik -- Der Verstand ist wie eine Fahrkarte. Sie hat nur Sinn wenn man sie benutzt. (Ernst R. Hauschka (*1926), deutscher Essayist, Aphoristiker und Bibliothekar) -------------- nächster Teil -------------- Ein Dateianhang mit Binärdaten wurde abgetrennt... Dateiname : signature.asc Dateityp : application/pgp-signature Dateigröße : 190 bytes Beschreibung: nicht verfügbar URL : From richard.moehn at gmx.de Sun May 6 05:46:02 2012 From: richard.moehn at gmx.de (Richard =?iso-8859-1?Q?M=F6hn?=) Date: Sun, 6 May 2012 14:46:02 +0200 Subject: [Dresden-pm] Datei Lesen plus schreiben In-Reply-To: <20120506120934.GA3177@googlemail.com> References: <20120506120934.GA3177@googlemail.com> Message-ID: <20120506124602.GA1720@clarence.org> On Sun, May 06, 2012 at 02:09:36PM +0200, Sebastian Oeste wrote: > Ich wollte ein Perl Skript schreiben mit dem ich eine bestimmte Zeile aus > einer Datei löschen kann. > > #! /usr/bin/perl -w > > use strict; > use warnings; > use feature "say"; > > my ($fh, $i); > open ($fh, "+>", "test.txt") || die qq/cannot open $!/; > my @lines = (); > $i = 0; > while ( <$fh> ) > { > push (@lines, $_) unless $i == 2; > $i ++; > } > > for (@lines) > { > print $fh "$_\n" ; > } > > close ($fh); > > leider funktioniert es nicht mit "+>" die Datei zum lesen und schreiben zu > öffnen. Damit das Skript funktioniert muss ich die Datei erst zum lesen > öffnen, nach dem einlesen wieder schließen und dann zum schreiben öffnen. > > Warum funktioniert das nicht ? > Habt ihr ein Tip für mich wie das noch eleganter geht ? Tipps zur Eleganz: - Die eingebaute Variable $. ($INPUT_LINE_NUMBER mit use English) enthält die aktuelle Zeilennummer für das aktuelle Filehandle. - Bei großen Dateien ist es problematisch, alles in den Speicher (Array) zu lesen. Daher: - Entweder Inplace-Bearbeitung mit $^I oder -i. - Oder Tie::File. Damit kann man auf die Datei wie auf ein Array zugreifen, ohne dass sie in den Speicher geladen wird. Beste Grüße Richard From ss5 at renormalist.net Mon May 7 02:44:07 2012 From: ss5 at renormalist.net (Steffen Schwigon) Date: Mon, 07 May 2012 10:44:07 +0100 Subject: [Dresden-pm] Datei Lesen plus schreiben In-Reply-To: <20120506120934.GA3177@googlemail.com> (Sebastian Oeste's message of "Sun, 6 May 2012 14:09:36 +0200") References: <20120506120934.GA3177@googlemail.com> Message-ID: <87wr4o1g2g.fsf@renormalist.net> Sebastian Oeste writes: > Hallo, > > Ich wollte ein Perl Skript schreiben mit dem ich eine bestimmte Zeile > aus einer Datei löschen kann. #! /usr/bin/perl use strict; use warnings; use Tie::File; tie my @lines, 'Tie::File', "test.txt" or die "cannot open: $!\n"; splice @lines, 2, 1; untie @lines; Wäre mein Vorschlag. Viele Grüße, Steffen -- Steffen Schwigon Dresden Perl Mongers From hd.kirmse at gmx.de Tue May 22 12:02:53 2012 From: hd.kirmse at gmx.de (Hans-Dietrich Kirmse) Date: Tue, 22 May 2012 21:02:53 +0200 Subject: [Dresden-pm] Frage zum Testen Message-ID: <4FBBE2DD.4010200@gmx.de> Hallo, euer Zaungast aus Thüringen muss euch wiedermal belästigen. Für ein Schulserver-Projekt habe ich ein paar Scripte zur User- und Rechnerverwaltung erstellt. Diese werden über ein Webinterface (erstellt unter Verwendung eines PHP-Frameworks) aufgerufen. Ich wurde schon mehrfach angemahnt, die Scripte so zu erstellen, dass die einen auswertbaren Errorcode zurückliefern. Ich habe deshalb begonnen, alle Scripte zu überarbeiten und konsequent jedes "die" zu ersetzen. Um gleichzeitig die Hinweise aus "Perl Best Practices" umzusetzen, habe ich eine Routine "do_exit" erstellt, die einerseits einen Errorcode zurückliefert und andererseits gut gehändelt werden kann, um verständliche Fehlermeldungen zu bringen. http://dev.delixs.de/wsvn/delixs/delixs-scripts/trunk/share/perl5/Delixs/Error.pm Die Fehlermeldungen sehen so aus: http://www.erasmus-reinhold-gymnasium.de/delixs/scripte/fehlermeldung.txt Ich möchte gern zu jeder Routine aus den Modulen entsprechende Tests schreiben, aber genau hier ist mein Problem. Ich weiss leider nicht, wie ich diesen zurückgegebenen Errorcode von Perl aus abfragen kann. Auch die Ausgabe der Fehlermeldung würde ich gern testen. Hier sehe ich als einzige Chance, einen Fehler zu provozieren und dabei über eval zu gehen und diese Meldung dann aus $@ auszulesen. Geht das auch anders oder ist das der übliche Weg für solche Tests? Bin für jede Antwort sehr dankbar. Viele Grüße (aus Saalfeld/Thüringen) Hans-Dietrich From ss5 at renormalist.net Wed May 23 12:52:43 2012 From: ss5 at renormalist.net (Steffen Schwigon) Date: Wed, 23 May 2012 20:52:43 +0100 Subject: [Dresden-pm] Frage zum Testen In-Reply-To: <4FBBE2DD.4010200@gmx.de> (Hans-Dietrich Kirmse's message of "Tue, 22 May 2012 21:02:53 +0200") References: <4FBBE2DD.4010200@gmx.de> Message-ID: <87txz665f8.fsf@renormalist.net> Hans-Dietrich Kirmse writes: > Für ein Schulserver-Projekt habe ich ein paar Scripte zur User- und > Rechnerverwaltung erstellt. Diese werden über ein Webinterface > (erstellt unter Verwendung eines PHP-Frameworks) aufgerufen. Ich wurde > schon mehrfach angemahnt, die Scripte so zu erstellen, dass die einen > auswertbaren Errorcode zurückliefern. Ich habe deshalb begonnen, alle > Scripte zu überarbeiten und konsequent jedes "die" zu ersetzen. Wodurch hast Du das "die" ersetzt, durch Dein unten besagtes "exit"? Weil prinzipiell ist "die" öfter die richtigere Variante. Es geht im Program mit eval{} abzufangen oder macht anderenfalls ein exit(). Die exit-Codes kannst Du mit $? und $! beeinflussen. Ein direktes exit() lässt sich nicht abfangen, da kann keiner Errorhandling drumrum schreiben. Entweder direkt selber oder implizit mit einem der Exception-Module von CPAN. > Um gleichzeitig die Hinweise aus "Perl Best Practices" umzusetzen, > habe ich eine Routine "do_exit" erstellt, die einerseits einen > Errorcode zurückliefert und andererseits gut gehändelt werden kann, um > verständliche Fehlermeldungen zu bringen. > > http://dev.delixs.de/wsvn/delixs/delixs-scripts/trunk/share/perl5/Delixs/Error.pm Das ganze in eine Funktion zu packen ist ok, aber ich empfehle, doch wieder "die" am Ende zu verwenden, und die Funktion entsprechend anders zu nennen, "do_error()" o.s.ä. Du kannst "perldoc -f die" und "man perlvar" zu $! und $? lesen, damit geht eine Menge. Ich hab das nur mal zum Demonstrieren in http://pastie.org/3957135 exerziert, aber ich bin nicht sicher, ob das Setzen von $? und $! eine Gute Sache(tm) ist. Wenn Du derart ausführlich Fehler definieren willst, schau mal besser, ob eines der Module von CPAN passt, z.B. https://metacpan.org/module/Exception::Class Und prüf außerdem, ob Deine Kollegen die wohldefinierten exit-Code *wirklich* brauchen. Gibt's denn die vielen wichtigen Zeilen Code schon, die Deine exit-Codes auswerten? Falls nicht, wirf einfach mit "die" oder Exception::Class nur die Fehlerbeschreibung. Das reicht zu 99%. Und wenn ja, wie tauscht ihr die Fehlercode-Definition mit dem PHP-Programm aus? Oder wie wir in Dresden hier sagen: ?Ick gloob da ni dranne, wa.? :) > Die Fehlermeldungen sehen so aus: > http://www.erasmus-reinhold-gymnasium.de/delixs/scripte/fehlermeldung.txt > > Ich möchte gern zu jeder Routine aus den Modulen entsprechende Tests > schreiben, aber genau hier ist mein Problem. > > Ich weiss leider nicht, wie ich diesen zurückgegebenen Errorcode von > Perl aus abfragen kann. Auch die Ausgabe der Fehlermeldung würde ich > gern testen. Hier sehe ich als einzige Chance, einen Fehler zu > provozieren und dabei über eval zu gehen und diese Meldung dann aus $@ > auszulesen. Geht das auch anders oder ist das der übliche Weg für > solche Tests? Wenn Du "die" verwendest, kannst Du prinzipiell Dein eval{} und $@ machen, ja. Mit exit() wird das schwer. Prinzipiell funktioniert das im Test genaus wie in meinem obigen Beispiel. Schau aber besser nach einem richtigen Testmodul, wie z.B. https://metacpan.org/module/Test::Exception Viel Glück. Halt uns auf dem laufenden. Kind regards, Steffen -- Steffen Schwigon Dresden Perl Mongers From oeste.sebastian at googlemail.com Thu May 24 02:11:02 2012 From: oeste.sebastian at googlemail.com (Sebastian Oeste) Date: Thu, 24 May 2012 11:11:02 +0200 Subject: [Dresden-pm] Dresden-pm Nachrichtensammlung, Band 103, Eintrag 4 In-Reply-To: References: Message-ID: <20120524091100.GA2215@googlemail.com> Hallo, um die Ausgaben von STDERR bzw. STDOUT zu testen gibt es ein Modul Test::Output. http://search.cpan.org/~bdfoy/Test-Output-1.01/lib/Test/Output.pm Welchem man einfach eine Referenz auf eine Subroutine reingibt und sagt was man erwartet was die Suboutine auf dem entsprechenden "Kanal" ausgibt. Wenn du auch Warnungen welche z.B. mit warn() erzeugt wurden Testen möchtest, ob diese wirklich dann ausgegeben werden wenn du sie erwartest, solltest du dir auch Test::Warn http://search.cpan.org/~chorny/Test-Warn-0.24/Warn.pm angucken. Wenn du einfach nur sicher gehen willst das dein Code keine Warnungen ausgibt dann gibts auch noch Test::NoWarnings. http://search.cpan.org/~adamk/Test-NoWarnings-1.04/lib/Test/NoWarnings.pm Hier muss man nicht mehr machen als einfach nur den Test Plan incrementieren. Solltest du zum Errorhandling Exceptions nutzen dann kannst du die natürlich auch Testen. http://search.cpan.org/~adie/Test-Exception-0.31/lib/Test/Exception.pm Hab ich persönlich noch nicht genutzt aber sieht brauchbar aus ;-) Da du das "Perl Best Practice" angesprochen hast, da sollte auch was zum Testen drin stehen, weiß leider nicht wieviel bin selbst noch am Lesen :-D Was allerdings auch ne ganz gute Sache ist ist "Perl Testing A Developers Notebook" dass gibts auch bei Google Books. http://books.google.de/books?id=o9xWJtvhVZ4C&printsec=frontcover&hl=de&source=gbs_ge_summary_r&cad=0#v=onepage&q&f=false Ich hab das Buch zum anfassen daliegen und muss sagen es ist sehr gut. Die Module oben sind auch daraus. Vllt. hilft es dir ja weiter. Gruß, Basti > Hallo, > > euer Zaungast aus Thüringen muss euch wiedermal belästigen. > > Für ein Schulserver-Projekt habe ich ein paar Scripte zur User- und > Rechnerverwaltung erstellt. Diese werden über ein Webinterface (erstellt > unter Verwendung eines PHP-Frameworks) aufgerufen. Ich wurde schon > mehrfach angemahnt, die Scripte so zu erstellen, dass die einen > auswertbaren Errorcode zurückliefern. Ich habe deshalb begonnen, alle > Scripte zu überarbeiten und konsequent jedes "die" zu ersetzen. > > Um gleichzeitig die Hinweise aus "Perl Best Practices" umzusetzen, habe > ich eine Routine "do_exit" erstellt, die einerseits einen Errorcode > zurückliefert und andererseits gut gehändelt werden kann, um > verständliche Fehlermeldungen zu bringen. > > http://dev.delixs.de/wsvn/delixs/delixs-scripts/trunk/share/perl5/Delixs/Error.pm > > > Die Fehlermeldungen sehen so aus: > http://www.erasmus-reinhold-gymnasium.de/delixs/scripte/fehlermeldung.txt > > Ich möchte gern zu jeder Routine aus den Modulen entsprechende Tests > schreiben, aber genau hier ist mein Problem. > > Ich weiss leider nicht, wie ich diesen zurückgegebenen Errorcode von > Perl aus abfragen kann. Auch die Ausgabe der Fehlermeldung würde ich > gern testen. Hier sehe ich als einzige Chance, einen Fehler zu > provozieren und dabei über eval zu gehen und diese Meldung dann aus $@ > auszulesen. Geht das auch anders oder ist das der übliche Weg für solche > Tests? > > Bin für jede Antwort sehr dankbar. From hd.kirmse at gmx.de Fri May 25 23:31:39 2012 From: hd.kirmse at gmx.de (Hans-Dietrich Kirmse) Date: Sat, 26 May 2012 08:31:39 +0200 Subject: [Dresden-pm] Frage zum Testen Message-ID: <20120526063139.189830@gmx.net> Hallo Steffen, herzlichen Dank für deine Antwort. Ich werde mit $! und $? noch weiter herumexperimentieren. Wenn sich der exit-code damit so setzen läßt, wie gedacht (danach sieht es aus), dann werde ich auf diese Variante umstellen. Wenn nicht, dann wird es bei der Variante mit dem direkten Aufruf von exit bleiben. Ob ich nun die Fehlervarianten in die Tests mit reinbringe, sehe ich eher als unproblematisch an. Wegen der Tatsache, ob denn unbedingt dieser Exit-code gebraucht wird: ich bin leider nur Laie und muss einfach den Experten Glauben schenken. Es wurde mir so begründet, dass die Scripte in Hintergrund aufgerufen werden und damit zumindest nicht in jedem Fall die Rückgabe ausgewertet werden kann - der Exit-Code aber schon. Nochmals meinen Dank. Viele Grüße Hans-Dietrich -------- Original-Nachricht -------- > Datum: Wed, 23 May 2012 20:52:43 +0100 > Von: Steffen Schwigon > An: dresden-pm at pm.org > Betreff: Re: [Dresden-pm] Frage zum Testen > Hans-Dietrich Kirmse writes: > > Für ein Schulserver-Projekt habe ich ein paar Scripte zur User- und > > Rechnerverwaltung erstellt. Diese werden über ein Webinterface > > (erstellt unter Verwendung eines PHP-Frameworks) aufgerufen. Ich wurde > > schon mehrfach angemahnt, die Scripte so zu erstellen, dass die einen > > auswertbaren Errorcode zurückliefern. Ich habe deshalb begonnen, alle > > Scripte zu überarbeiten und konsequent jedes "die" zu ersetzen. > > Wodurch hast Du das "die" ersetzt, durch Dein unten besagtes "exit"? > > Weil prinzipiell ist "die" öfter die richtigere Variante. > > Es geht im Program mit eval{} abzufangen oder macht anderenfalls ein > exit(). Die exit-Codes kannst Du mit $? und $! beeinflussen. > > Ein direktes exit() lässt sich nicht abfangen, da kann keiner > Errorhandling drumrum schreiben. > > Entweder direkt selber oder implizit mit einem der Exception-Module von > CPAN. > > > > Um gleichzeitig die Hinweise aus "Perl Best Practices" umzusetzen, > > habe ich eine Routine "do_exit" erstellt, die einerseits einen > > Errorcode zurückliefert und andererseits gut gehändelt werden kann, um > > verständliche Fehlermeldungen zu bringen. > > > > > http://dev.delixs.de/wsvn/delixs/delixs-scripts/trunk/share/perl5/Delixs/Error.pm > > Das ganze in eine Funktion zu packen ist ok, aber ich empfehle, doch > wieder "die" am Ende zu verwenden, und die Funktion entsprechend anders > zu nennen, "do_error()" o.s.ä. > > Du kannst "perldoc -f die" und "man perlvar" zu $! und $? lesen, damit > geht eine Menge. > > > Ich hab das nur mal zum Demonstrieren in > > http://pastie.org/3957135 > > exerziert, aber ich bin nicht sicher, ob das Setzen von $? und $! eine > Gute Sache(tm) ist. > > Wenn Du derart ausführlich Fehler definieren willst, schau mal besser, > ob eines der Module von CPAN passt, z.B. > > https://metacpan.org/module/Exception::Class > > Und prüf außerdem, ob Deine Kollegen die wohldefinierten exit-Code > *wirklich* brauchen. Gibt's denn die vielen wichtigen Zeilen Code schon, > die Deine exit-Codes auswerten? > > Falls nicht, wirf einfach mit "die" oder Exception::Class nur die > Fehlerbeschreibung. Das reicht zu 99%. > > Und wenn ja, wie tauscht ihr die Fehlercode-Definition mit dem > PHP-Programm aus? Oder wie wir in Dresden hier sagen: ?Ick gloob da ni > dranne, wa.? :) > > > > > Die Fehlermeldungen sehen so aus: > > > http://www.erasmus-reinhold-gymnasium.de/delixs/scripte/fehlermeldung.txt > > > > Ich möchte gern zu jeder Routine aus den Modulen entsprechende Tests > > schreiben, aber genau hier ist mein Problem. > > > > Ich weiss leider nicht, wie ich diesen zurückgegebenen Errorcode von > > Perl aus abfragen kann. Auch die Ausgabe der Fehlermeldung würde ich > > gern testen. Hier sehe ich als einzige Chance, einen Fehler zu > > provozieren und dabei über eval zu gehen und diese Meldung dann aus $@ > > auszulesen. Geht das auch anders oder ist das der übliche Weg für > > solche Tests? > > Wenn Du "die" verwendest, kannst Du prinzipiell Dein eval{} und $@ > machen, ja. Mit exit() wird das schwer. Prinzipiell funktioniert das im > Test genaus wie in meinem obigen Beispiel. > > Schau aber besser nach einem richtigen Testmodul, wie z.B. > > https://metacpan.org/module/Test::Exception > > > Viel Glück. Halt uns auf dem laufenden. > > Kind regards, > Steffen > -- > Steffen Schwigon > Dresden Perl Mongers > _______________________________________________ > Dresden-pm mailing list > Dresden-pm at pm.org > http://mail.pm.org/mailman/listinfo/dresden-pm -- Empfehlen Sie GMX DSL Ihren Freunden und Bekannten und wir belohnen Sie mit bis zu 50,- Euro! https://freundschaftswerbung.gmx.de From hd.kirmse at gmx.de Mon May 28 09:25:56 2012 From: hd.kirmse at gmx.de (Hans-Dietrich Kirmse) Date: Mon, 28 May 2012 18:25:56 +0200 Subject: [Dresden-pm] Dresden-pm Nachrichtensammlung, Band 103, Eintrag 4 In-Reply-To: <20120524091100.GA2215@googlemail.com> References: <20120524091100.GA2215@googlemail.com> Message-ID: <4FC3A714.9020104@gmx.de> Hallo Sebastian, ich habe leider deine Mail übersehen bzw. nicht mitbekommen (vielleicht wegen dem Betreff?). Deswegen erst jetzt eine Antwort - Sorry. Am 24.05.2012 11:11, schrieb Sebastian Oeste: > Hallo, > > um die Ausgaben von STDERR bzw. STDOUT zu testen gibt es ein Modul > Test::Output. > http://search.cpan.org/~bdfoy/Test-Output-1.01/lib/Test/Output.pm das kannte ich noch nicht und sieht ja wirklich gut aus. > Welchem man einfach eine Referenz auf eine Subroutine reingibt und sagt was man > erwartet was die Suboutine auf dem entsprechenden "Kanal" ausgibt. > > Wenn du auch Warnungen welche z.B. mit warn() erzeugt wurden Testen möchtest, > ob diese wirklich dann ausgegeben werden wenn du sie erwartest, solltest du > dir auch Test::Warn http://search.cpan.org/~chorny/Test-Warn-0.24/Warn.pm > angucken. Warnungen gebe ich nicht aus. Wenn etwas brenzlig wird, wird bei mir rigeros eine Ausnahme erzeugt, also abgebrochen. > Wenn du einfach nur sicher gehen willst das dein Code keine Warnungen ausgibt > dann gibts auch noch Test::NoWarnings. > http://search.cpan.org/~adamk/Test-NoWarnings-1.04/lib/Test/NoWarnings.pm > Hier muss man nicht mehr machen als einfach nur den Test Plan incrementieren. > > Solltest du zum Errorhandling Exceptions nutzen dann kannst du die natürlich > auch Testen. Ich bin nur Laie und so richtig weiss ich mit Exception in Zusammenhang mit Perl nicht wirklich was anzufangen. > http://search.cpan.org/~adie/Test-Exception-0.31/lib/Test/Exception.pm > Hab ich persönlich noch nicht genutzt aber sieht brauchbar aus ;-) sieht ganz so aus, als ob das nur mit OOP relevant ist, aber im Zusammenhang mit Perl habe ich da gar keine Erfahrung. (allerdings führe ich mir gerade die Artikel zu Moose aus dem foo-Magazin zu Gemüte - mal sehen.) > Da du das "Perl Best Practice" angesprochen hast, da sollte auch was zum > Testen drin stehen, weiß leider nicht wieviel bin selbst noch am Lesen :-D ja, dazu steht wirklich auch etwas drin, wobei im foo-Magazin schon mehr dazu gekommen ist. Allerdings die Aufzählung der Testfälle ist wertvoll. Ebenfalls gefällt mir die sachliche und realistische Herangehensweise. > Was allerdings auch ne ganz gute Sache ist ist "Perl Testing A Developers > Notebook" dass gibts auch bei Google Books. > http://books.google.de/books?id=o9xWJtvhVZ4C&printsec=frontcover&hl=de&source=gbs_ge_summary_r&cad=0#v=onepage&q&f=false > Ich hab das Buch zum anfassen daliegen und muss sagen es ist sehr gut. Die > Module oben sind auch daraus. Vllt. hilft es dir ja weiter. Mein Englisch ist leider (sau-)mäßig, sodass ich vor allem auf deutschprachige Literatur und Zeitschriften angewiesen bin. Zum Glück sieht es da bei Perl ja sehr gut aus. Das mit dem Test::Output hat mir auf jeden Fall sehr weiter geholfen. - Danke. Viele Grüße Hans-Dietrich