Archive-name: de/comp-lang-perl/mini-faq Posting-frequency: weekly Last-modified: 2004-10-26 Version: 1.16 URL: http://www.worldmusic.de/perl/mini-faq.html ------------------------------------------------------------------------ Wichtige Informationen fuer neue Teilnehmer in de.comp.lang.perl.misc Lieber Leserin, lieber Leser, Jeden Tag laufen in de.comp.lang.perl.misc eine Menge Fragen und Nachrichten auf. Viele dieser Fragen und Problemstellungen sind mittlerweile sehr gut dokumentiert und ausfuehrlich beantwortet. Bevor Du also hier postest, unternimm' bitte die Anstrengung, zuerst einmal selbst eine Antwort auf Deine Frage zu finden. Die untenstehen Resourcen sollen Dir dabei helfen. Hinweis in eigener Sache: Eine FAQ, auch eine kleine, steht und faellt mit den Anregungen, Kommentaren, Ergaenzungen und der Kritik ihrer Leser. Insbesondere Links aendern sich im Netz mit einem unglaublichen Tempo. Sollte Dir also ein Link auffallen, der nicht mehr funktioniert, gib' mir bitte Bescheid, damit ich die Aenderungen einarbeiten kann (am besten gleich mit dem aktuellen URL). Danke. Fuer alle dieses Dokument betreffenden Fragen, etc. gibt es die E-Mail-Adresse perl_mini_faq@worldmusic.de Um ungewollte Spam-Mails zu vermeiden _muss_ im "Subject:"-Feld der Mail das Wort "mini_faq" auftauchen. Andere Mails werden ausgefiltert. ------------------------------------------------------------------------ Die Fragen: 1. Wo bekomme ich die aktuelle Perl-Version her? 2. Worum geht es in de.comp.lang.perl.misc? 3. Was sollte ich vor einem Posting beachten? 4. Wie vermeide ich Fehler (mit use warnings, use diagnostics und use strict)? 5. Wie kontrolliere ich die Rueckgabewerte von Perl-Funktionen (um zu sehen, ob sie erfolgreich waren)? 6. Wie soll ich bei Problemen vorgehen? Die Checkliste! 7. Wo finde ich die Perl-Dokumentation und -FAQ (immer wieder gestellte Fragen) 8. Welche Perl Websites sind wichtig? 9. Wo finde ich Informationen zu den Perl Modulen? 10. Was fuer Buecher sollte ich lesen? 11. Wo finde ich archivierte USENET-Artikel (News) zu Perl? 12. Wo finde ich weitere (allgemeine) Informationen zur Benutzung von Newsgroups? 13. Credits, Rechtliches, Copyright zu diesem Dokument ------------------------------------------------------------------------ 1. Wo bekomme ich die aktuelle Perl-Version her? Die aktuelle stabile Version von Perl ist 5.8.5 (Quelle: www.perl.com, Stand 24.10.2004). Sie kann unter folgender Adresse heruntergeladen werden: Zum Selbstkompilieren: Unixoide Systeme (Linux, FreeBSD, Solaris, MacOS X, ...) * http://www.perl.com/CPAN/src/stable.tar.gz Microsoft Systeme * http://www.perl.com/CPAN/src/stable.zip Fertig kompilierte Versionen finden sich hier: Perl fuer Win32 Systeme (Windows 95/98/ME und NT/2k/XP, ... ) und Linux, Solaris * http://www.activestate.com/ActivePerl/ Macintosh - MacPerl * http://www.macperl.com/ Weitere fertig kompilierte Versionen finden sich hier: Perl fuer Systeme von Acorn bis z/OS * http://www.perl.com/CPAN/ports/index.html ------------------------------------------------------------------------ 2. Worum geht es in de.comp.lang.perl.misc? In de.comp.lang.perl.misc geht es um Fragen rund um Perl als Programmiersprache. In der Charta fuer die Newsgroup wurde festgelegt: Charta: In dieser Gruppe geht es um Larry Walls Perl-System, soweit das Thema nicht von anderen Gruppen der Unterhierarchie abgedeckt ist. Fuer Antworten auf spezielle Fragen zu CGI-Skripten in Perl gibt es die gesonderte Newsgroup: * news:de.comp.lang.perl.cgi Crossposts (also das gleichzeitige Absetzen der Artikel in mehrere Newsgroups ist im Allgemeinen unerwuenscht, da ein Thema nicht gleichzeitig ein spezielles CGI-Thema als auch ein allgemeines Perl-Thema (ohne CGI) sein kann). In wohldurchdachten Ausnahmen bitte ein Followup-To auf eine passende Gruppe setzen. Fuer die Perl/CGI-Newsgroup existiert eine eigene FAQ, zu finden unter * http://www.worldmusic.de/perl/dclpc-faq.html Fuer Fragen zu CGI-Scripts in anderen Programmiersprachen gibt es die Newsgroup * news:de.comm.infosystems.www.authoring.misc * http://dciwam.de [Webseite der NG, mit FAQ, ...] Anmerkung: die Gruppe de.comm.infosystems.www.authoring.cgi existiert AFAIK nicht mehr. Wenn du Probleme mit deinem Webserver hast (eine Frage, die auch hauptsaechlich im CGI-Umfeld vorkommt), dann wende dich bitte an * news:de.comm.infosystems.www.servers Parallel dazu die englischsprachigen Newsgroups Perl: * news:comp.lang.perl.misc (rund um Perl als Programmiersprache) * news:comp.lang.perl.modules (speziell fuer Perl-Module) * news:comp.lang.perl.moderated (moderierte Perl-Newsgroup) * news:comp.lang.perl.announce (Neuigkeiten ueber Perl) * news:comp.lang.perl.tk (speziell fuer Perl in Verbindung mit der graphischen Erweiterung "Tk") CGI: * news:comp.infosystems.www.authoring.cgi Die fuehrende Sammlung von Funktionen fuer CGI-Anwendungen ist: * das Perl Modul CGI.pm zu finden unter: * http://stein.cshl.org/WWW/software/CGI/ * Eine deutschsprachige Dokumentation zu CGI.pm findet sich unter: * http://www.oreilly.de/catalog/perlmodger/manpage/cgi.htm Ausserdem koennte "libwww-perl" (auch "LWP" genannt) fuer Dich von Interesse sein. Mit dieser Sammlung von Modulen ist es u.a. moeglich HTTP/FTP-Zugriffe in Perl zu realisieren. Das Modul findest sich hier: * http://www.linpro.no/lwp/ * http://www.perl.com/CPAN/modules/by-module/LWP/ Falls Du Schwierigkeiten mit einem CGI-Script hast, schau mal unter folgenden URLs: * http://www.worldmusic.de/perl/dclpc-faq.html (deutsch) * http://www.worldmusic.de/perl/idiots-guide.html (deutsch) * http://www.boutell.com/openfaq/cgi/ (englisch) * http://computerdog.com/CGI_MetaFAQ.html (englisch) ------------------------------------------------------------------------ 3. Was sollte ich vor einem Posting beachten? Bitte beachte vor einem Posting folgende Regeln: * Lies die Dokumentation: Bitte versuche erstmal selbst die Loesung fuer dein Problem zu finden. Oft steht die Loesung in der Dokumentation des Moduls, oder der Funktion die du verwendest. * Wiederhole nicht altbekannte Fragen (FAQs): Viele Fragen wurden schon etliche Male durchgekaut und die Antworten in FAQ-Sammlungen zusammengefasst. Solche Fragen muessen nicht immer und immer wieder durchgekaut werden. * Erst lesen, dann schreiben: Wurde deine Frage vielleicht erst letztlich schonmal gestellt? Schau vor einem Posting doch bitte erstmal in einem Archiv vorbei. * Beachte die Netiquette: Details findest du im Abschnitt "Wo finde ich weitere (allgemeine) Informationen zur Verwendung von Newsgroups?" ------------------------------------------------------------------------ 4. Wie vermeide ich Fehler (mit use warnings, use diagnostics und use strict)? Faengt dein Programm so (oder so aehnlich) an? #!/usr/local/bin/perl use warnings; use diagnostics; use strict; Falls nein, dann solltest du das schleunigst aendern... Diese drei sogenannte "Pragmas" schalten die erweitere Fehlerpruefung ein und erhoehen die Anzahl von Warnungen, die Perl auspuckt, um die beim Suchen deines Problems zu helfen. Das Pramga warnings ersetzt ab der Version 5.6.0 den bisher ueblichen -w-Shebang-Zeilen-Switch. Hiermit werden alle moeglichen Warnungen ueber moegliche Fehler angezeigt (eine Beschreibung der Fehler findet sich in der "perldiag"-Seite der Dokumentation). Allerdings werden die Warnungen hiermit nur fuer die lokale Datei (und nicht etwa auch noch fuer eingebundenen Module) eingeschaltet. Mit der Eingabe von perldoc warnings auf der Kommandozeile wird die Dokumentation zu diesem Pragma angezeigt. Die Benutzung der Perl-Dokumentation ist unter Punkt 6 dieser mini-FAQ erklaert. Siehe auch warnings Und use diagnostics sorgt dafuer, dass die "warnings"-Warnungen detaillierter erklaert werden (mit den Erklaerungen der perldiag-Seite der Dokumentation). Das dritte Pragma im Bunde (use strict) generiert Fehler(-meldungen) zur Compile- und Laufzeit fuer gewisse unsichere Variablen, Referenzen und Unterroutinenkonstrukte (erklaert auf der strict-Seite der Dokumentation). ------------------------------------------------------------------------ 5. Wie kontrolliere ich die Rueckgabewerte von Perl-Funktionen (um zu sehen, ob sie erfolgreich waren)? Kontrollierst Du den Rueckgabewert von in Perl integrierten Funktionen? Die meisten Datei- und Systemfunktionen setzen bei Fehlern die Variable $! (s. perlvar) und liefern eigene Rueckgabewerte. Hier ein Beispiel, in dem versucht wird, eine Datei zum Schreiben zu oeffnen. Schlaegt die Anweisung fehl, wird eine Fehlermeldung ausgegeben, die eine Beschreibung des Fehlers enthaelt und den Inhalt der Variablen $! mit ausgibt und danach das Programm beendet: open PASSWD, '>', '/etc/passwd' or die "Fehler beim Oeffnen von /etc/passwd. Grund: $!\n"; Die Spezialvariable $! enhaelt eine Fehlermeldung, die Dir mehr Informationen darueber liefern kann, aus welchem Grund Dein Programm fehlgeschlagen ist. Das Perldokument perlfunc gibt aufuehrlich Auskunft ueber die Rueckgabewerte von Funktionen. Laesst man das Newlinezeichen "\n" am Ende der "die"-Anweisung weg, so wird nach der Fehlermeldung und dem Inhalt von $! auch noch der Skriptname und die Zeilennummer mit ausgegeben. ------------------------------------------------------------------------ 6. Wie soll ich bei Problemen vorgehen? Die Checkliste! Unter der URL: * http://www.worldmusic.de/perl/checkliste.html findest Du Martin H. Slukas Checkliste, mit der die Fehlersuche (und -vermeidung!) zum Kinderspiel wird. Bitte auf jeden Fall durchgehen bevor du deine Frage postest. ------------------------------------------------------------------------ 7. Wo finde ich die Perl-Dokumentation und -FAQ (haeufig gestellte Fragen) FAQs (kurzform fuer Frequently Asked Questions, also haeufig gestellte Fragen) sind eine Sammlung von Fragen (und idR auch Antworten), die schon sehr oft diskutiert und umfassend beantwortet wurden. Das Stellen solcher Fragen in der Newsgroup sollte nach Moeglichkeit vermieden werden, da man sich die Antworten sehr leicht anderweitig besorgen kann. Viele Fragen zur Programmierung von Perl werden in der Perl-Dokumention beantwortet. Sie ist in der Regel Teil der Perl-Standarddistribution. Das bedeutet, dass sich ein Grossteil der Antworten bereits auf dem Rechner befinden, auf dem Perl installiert ist. Seit der Perl Version 5.004 sind auch die FAQs Teile der Standarddistribution. Die Doku, sowie die FAQ sind bei Betriebssystemen, die ueber eine Kommandozeile verfuegen, durch die Eingabe folgender Befehle zu erreichen. Das Zeichen "%" steht hier fuer eine Eingabe auf der Kommandozeile. Nicht miteingeben! Das Inhaltsverzeichnis zur Dokumentation: % perldoc perltoc Das Inhaltsverzeichnis zur FAQ: % perldoc perlfaq Die einzelnen Teile der Dokumentation/FAQ sind ueber die Eingabe von "perldoc" (ohne die Anfuehrungszeichen), einem Leerzeichen und dem Namen des dazugehoerigen Dokumentes zu erreichen. Beispiel: % perldoc perltrap Die gezielte Suche nach Funktionen in der Dokumentation laesst sich mit der Verwendung des '-f'-Switches von perldoc bewerkstelligen: Beispiel: % perldoc -f SUCHBEGRIFF Die Suche nach Schluesselwoertern in den Ueberschriften der FAQ funktioniert mit Hilfe des '-q'-Switches: Beispiel: % perldoc -q SUCHBEGRIFF Auf dem Macintosh sind diese Dokumente ueber das Hilfe-Menue direkt aus MacPerl heraus und mit der Tastenkombination "Apfel- ("Command"-) H" zugaenglich, unter Unix ausserdem -- wie ueblich -- idR auch als manpages. In der "ActivePerl"-Distribution von Perl ist die Dokumentation i.d.R. ausserdem in HTML-Form zugaenglich. Hier ein kurzer Ueberblick ueber die Themen, mit einer Liste der dazugehoerigen Dokumente: Dokumentation Operatoren (<>=,+ etc..) perlop Funktionen (print, split, etc..) perlfunc Objekte perltoot, perlref, perlmod, perlobj, perltie Datenstrukturen perlref, perllol, perldsc Module perlmod, perlsub perlmodlib Regulaere Ausdruecke perlre, perlfunc, perlop, Der Wechsel von Perl 4 zu Perl 5 perltrap, perl Perl und C gemeinsam benutzen perlxstut, perlxs, perlcall, perlguts, perlembed Die (englische) Dokumentation ist unter folgender URL auch im WWW zu finden: * http://www.perldoc.com/ Eine Kurzreferenz zum Herunterladen findet sich unter: * http://www.squirrel.nl/people/jvromans/perlref.html FAQ perlfaq1 Allgemeine Fragen zu Perl perlfaq2 Wo man Perl herbekommt und wie man Perl lernt: (Wo gibt es den Quellcode von Perl, wo finde ich die Dokumentation, Unterstuetzung, Training und verwandte Bereiche) perlfaq3 Programmierwerkzeuge und -unterstuetzung: perlfaq4 Manipulation von Daten: (Wie man Zahlen, Daten (als Plural von "Datum"), Strings, Arrays und Hashes manipuliert, sowie diverse Aspekte der Datenbearbeitung.) perlfaq5 Dateien und Formate: (Eingabe/Ausgabe (I/O), Dateihandles, flushing, Formate, Fusszeilen (footers)) perlfaq6 Pattern Matching und Regulaere Ausdruecke: perlfaq7 Generelle Fragen zu Perl als Programmiersprache, die in keine der anderen Abteilungen passen. perlfaq8 Interaktion mit dem System: (Interprozess-Kommunikation (IPC), Kontrolle ueber die Benutzerschnittstelle (Tastatur, Bildschirm, Maus)) perlfaq9 Perl und Netzwerke Die FAQ ist unter folgender URL auch im WWW zu finden: * http://language.perl.com/faq/index.html Fuer die Perl-Distribution von Activestate existiert eine FAQ, auf der Activestate-Website: * http://www.activestate.com/ * http://aspn.activestate.com/ASPN/docs/ASPNTOC-ACTIVEPERL-003/ Weitere Fragen werden beantwortet auf der privaten FAQ von Achim Grolms: * http://perl.grolmsnet.de/faq/ ------------------------------------------------------------------------ 8. Welche Perl Websites sind wichtig? Hast Du Im WWW schon einmal unter * http://www.perl.com/ nachgeschaut? Dies ist die "offizielle" Perl Website. Hier finden sich Hinweise und Links zu den Modulen im Comprehensive Perl Archive Network (CPAN, http://www.cpan.org/), Artikel ueber die "Eingeweide" von Perl und mehr. Die komplette Perl-Dokumentation findest du auf deiner Festplatte (sofern Du Perl bei Dir installiert hast, was wir schwer hoffen) , oder unter * http://www.perldoc.com/ Deutschsprachige Online-Perl-Tutorials findest Du unter: * http://perl-seiten.bei.t-online.de/ * http://www.tekromancer.com/ Das Comprehensive Perl Archive Network (CPAN) enhaelt die vollstaendigste Sammlung von Materialen, Informationen und Resourcen zum Thema Perl und ist im WWW erreichbar unter: * http://www.perl.com/CPAN/ * http://www.cpan.org/ Die folgenden URLs bieten die Moeglichkeit CPAN ueber das WWW zu durchsuchen: * http://search.cpan.org/ * http://theory.uwinnipeg.ca/search/cpan-search.html * http://ls6.informatik.uni-dortmund.de/CPAN.html Die letzten beiden Suchmaschinen scheinen nicht mehr aktuell zu sein. ------------------------------------------------------------------------ 9. Wo finde ich Informationen zu den Perl-Modulen? Hast Du ueberprueft, ob es bereits ein Modul gibt, das bereits die Funktionen bereitstellt, die Du brauchst? Es gibt bereits eine Menge Module, die man sich nur herunterladen muss, und sie gleich benutzen kann. Details finden sich unter: * http://www.perl.com/CPAN/modules/00modlist.long.html Unter der Adresse * http://www.oreilly.de/catalog/perlmodger/manpage/ finden sich zu einigen Modulen deutschsprachige Versionen der Dokumentation. Allerdings sind diese Dokumente inzwischen etwas "angestaubt". Die Uebersetzungen stammen aus dem Jahr 1998, sind also bereits mehrere Jahre alt. Sie sollten daher bestenfalls zum allgemeinen Verstaendis der Funktionsweise der Module verwendet werden. Im CPAN gibt es die Dokumentation zu (fast) allen Modulen quasi tagesaktuell. ------------------------------------------------------------------------ 10. Wo finde ich archivierte USENET-Artikel (News) zu Perl? Die Suchmaschine Google unterhaelt durchsuchbare Archive mit Newsgroup-Artikeln: * http://groups.google.de/groups?hl=de&lr=&group=de.comp.lang.perl.* (deutsch) * http://groups.google.de/groups?hl=de&lr=&group=comp.lang.perl.* (englisch) Weitere Tips zum Suchen in den Newsgroups finden sich unter: * http://www.rz.uni-frankfurt.de/~harth/newssearch.html ------------------------------------------------------------------------ 11. Was fuer Buecher sollte ich lesen? Fuer Einsteiger Titel: Einfuehrung in Perl (Das "Lamabuch") Autor: Randal L. Schwartz & Tom Phoenix Bemerkungen: Deutsche Uebersetzung von Jorgen W. Lang Auflage: 3. Auflage 2002 ISBN: 3-89721-147-5 Verlag: O' Reilly URL: http://www.oreilly.de/catalog/einperl3ger/ Preis: 34,- EUR Beschreibung: Das Standardwerk fuer den Einstieg. Geschrieben von zwei der Perl-Gurus. Mit speziellen Uebungen am Ende jedes Kapitels. Fuer Fortgeschrittene: Titel: Programmieren mit Perl (Das "Kamelbuch") Autor: Larry Wall, Tom Christiansen, Jon Orwant Bemerkungen: Deutsche Uebersetzung von Peter Klicman Auflage: 2. Auflage 2001 (Uebersetzung der 3rd Edition des Originals) ISBN: 3-89721-144-0 Verlag: O'Reilly URL: http://www.oreilly.de/catalog/pperl3ger/ Preis: 56,- EUR Beschreibung: Die Perl-Bibel. Umfassendes Referenzwerk. Geschrieben vom Vater von Perl, Larry Wall, und zwei der wohl groessten Perl-Gurus. Titel: Perl Kochbuch (Das "Dickhornschafbuch") [ # wow ! ;-) ] Autor: Tom Christiansen & Nathan Torkington Bemerkungen: Deutsche uebersetzung von Peter Klicman & Eike Grote Auflage: 1. Auflage 1999 ISBN: 3-89721-140-8 Verlag: O'Reilly URL: http://www.oreilly.de/catalog/cookbookger/index.html Preis: 46,- EUR Beschreibung: Loesungsbuch fuer die meisten immer wieder auftauchenden Problemstellungen in Perl. Eine ausfuehrlichere Liste mit deutschsprachigen Buechern zum Thema Perl findet sich unter: * http://www.worldmusic.de/perl/perlbuch.html ------------------------------------------------------------------------ 12. Wo finde ich weitere (allgemeine) Informationen zur Verwendung von Newsgroups? Speziell fuer Neuankoemmlinge in der Welt des USENET gibt es die beiden Gruppen: * news:de.newusers.infos (moderiert) * news:de.newusers.questions Hier findest du Informationen, die dir beim Arbeiten mit News hilfreich sind und kannst allgemeine Fragen zu diesem Thema stellen. Die Newsgroup dni ist dabei nur zum Lesen gedacht. Hier eine Auswahl der Artikel, die du als Neuling lesen solltest: * http://www.kirchwitz.de/~amk/dni/usenet-einfuehrung [Einfuehrung in das deutschsprachige Usenet] * http://www.kirchwitz.de/~amk/dni/netiquette [D I E N E T I Q U E T T E] * http://www.kirchwitz.de/~amk/dni/hoeflichkeit [Sieben Thesen zur Hoeflichkeit im Usenet] * http://www.kirchwitz.de/~amk/dni/faq [FAQ der Gruppe dnq] * http://www.kirchwitz.de/~amk/dni/erst-lesen-dann-schreiben [Erst lesen, dann schreiben] * http://www.kirchwitz.de/~amk/dni/warum-regeln [Warum soll ich mich an die Regeln halten?] ------------------------------------------------------------------------ 13. Credits, Rechtliches, Copyright zu diesem Dokument Credits und Danksagungen Dieses Dokument wurde inspiriert durch Nathan Torkington's Perl mini faq in comp.lang.perl.misc Dieses Dokument waere nicht moeglich gewesen ohne die Hilfe und Hinweise der folgenden Personen: * Nathan Torkington * Michael Gerth (Lektorat O'Reilly Verlag) * Florian Kuehnert * Martin Jost * Jan Voges * David Alex Lamb * Boris 'pi' Piwinger * Markus Wolf * Thomas Hochstein * Volker Schmidt * Matthias-H. Weber * Alexander Harth * Wolfgang Wiese * Martin M. Sluka, * Robert Ladstaetter * Tilman Brock * Achim Grolms * Nico Schuetze * Stefan Brill * Richard Steuer und alle anderen, die direkt oder indirekt zum Entstehen und der Pflege dieses Dokumentes beigetragen haben. Nichtkommerzielle Reproduktion Es ist erlaubt dieses Dokument in Teilen oder als Ganzes ueber elektronische Medien und in gedruckter Form zu verbreiten, vorrausgesetzt, dass: * saemtliche Credit- und Copyrighthinweise beibehalten werden, * keinerlei Kosten ausser denen fuer die Reproduktion erhoben werden * vor einer Verbreitung der ernsthafte Versuch gemacht wird, die aktuellste verfuegbare Version dieses Dokumentes (zu finden unter http://www.worldmusic.de/perl/mini-faq.html bzw. als regelmaessiges Posting (alle 7 Tage) in der Newsgroup news:de.comp.lang.perl.misc) zu benutzen. * der Autor vor der Verbreitung informiert wird. Kommerzielle Reproduktion Anfragen zu allen anderen Rechten fuer die Verbreitung, einschliesslich der Integration dieses Dokumentes in Teilen oder als Ganzes, in kommerziellen Produkten, wie (aber nicht nur) Buechern, Zeitungsartikeln, Software oder CD-ROMs sind zu richten an * Jorgen W. Lang (perl_mini_faq@worldmusic.de) Jede Art der kommerziellen Reproduktion dieses Dokumentes oder von Teilen hieraus ohne vorherige schriftliche Erlaubnis des Autors ist nicht gestattet und wird entsprechend verfolgt. Information zu Autor und Copyright * Copyright (c) 1999-2002 by Jorgen W. Lang. Alle Rechte vorbehalten. * Copyright (c) 2003 - 2004 by Christian Lackas and Jorgen W. Lang. Alle Rechte vorbehalten ------------------------------------------------------------------------ Viel Glueck bei Deiner Arbeit mit Perl! Jorgen W. Lang und Christian Lackas ------------------------------------------------------------------------ Kritik, Aenderungswuensche, Korrekturen und Anregungen sind immer willkommen! Hierfuer gibt es die Adresse (Wichtig: in der Subject-Zeile muss der Begriff 'mini_faq' auftauchen, andere Mails werden ausgefiltert): * perl_mini_faq@worldmusic.de ------------------------------------------------------------------------