Bei Acme::Don't handelt es sich um ein Modul von Damian Conway. Der beigefügten Dokumentation ist somit nichts hinzuzufügen. Hier deshalb (m)eine deutsche Übersetzung:
Acme::Don't - Das Gegenteil von do
Dieses Dokument beschreibt Version 1.01 von Acme::Don::t, veröffentlicht am 3. Mai 2002.
use Acme::Don't;
don't { print "Dieser Text wird " . "nicht ausgegeben werden\n" }; # NO-OP
Das Modul Acme::Don't definiert ein Kommando namens don't
,
das das Gegenstück zum Perl-eigenen do
darstellt.
Es wird genauso verwendet wie die Funktion do BLOCK
,
mit der Ausnahme, dass es, statt den übergebenen Block auszuführen,
das... nunja... nicht tut.
Unabhängig vom Inhalt des Blocks, gibt don't
undef
zurück.
Auch das hier geht:
don't { # Code } while bedingung();
Und ja: In strenger Anlehnung an die Semantik von Perls magischem
do...while
wird der don't...while
-Block dabei in jedem Fall
vor der Prüfung der Bedingung kein einziges Mal ausgeführt. ;-)
Zu beachten ist, dass der don't
-Block syntaktisch korrekten Perl-Code
enthalten muss.
Das ist ein zentraler Punkt:
Die durch Nicht-Ausführung des Codes erzielten Leistungssteigerung
wird erzielt, ohne die Sicherheit, die die Syntax-Prüfung während der
Übersetzung des Scripts bietet, zu opfern.
do ZEICHENKETTE
wird (noch) nicht implementiert.
Als provisorische Lösung funktioniert:
don't {"Dateiname"};Das Konstrukt
don't { don't { ... } }
ist (noch) nicht bedeutungsgleich mit:
do { ... }
weil das äußere don't
die Ausführung des inneren don't
verhindert,
bevor das innere don't
die Möglichkeit hat zu erkennen, dass es tatsächlich
doch ausgeführt werden sollte.
Das ist freilich eine Frage der Semantik.
don't
bedeutet nicht tu das Gegenteil...
;
es bedeutet tu nichts mit...
.
Anders gesagt: Nichts gegen nichts tun tut... nichts.
Es ist (noch) nicht möglichdon't { ... } unless bedingung();
als Ersatz für
do { ... } if bedingung();
einzusetzen.
Auch dies ist eine Frage der Semantik.
don't...unless...
bedeutet nicht tu das Gegenteil von...falls...
;
es bedeutet tu nichts mit...falls nicht...
.
Damian Conway (damian@conway.org)
Luke Palmer sollte sehr viel besser aufpassen, bevor er vorschnell Wünsche äußert.
Unwahrscheintlich, denn es tut ja nichts. Ansonsten sind Fehlerberichte und anderweitige Rückmeldungen sehr willkommen.
Copyright (c) 2002, Damian Conway. Alle Rechte vorbehalten. Dieses Modul ist freie Software. Es darf gemäß den Vorschriften der Perl Artistic License verwendet, weitergegeben und/oder verändert werden (vgl. http://www.perl.com/perl/misc/Artistic.html)