Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Klein, schön, schnell

Klein, schön, schnell

Vortrag zu Curses::UI anlässlich des 15. deutschen Perl-Workshop (gpw2013) in Berlin

Avatar for Alexander Kluth

Alexander Kluth

March 13, 2013
Tweet

Other Decks in Programming

Transcript

  1. Einführung Einführung in Curses Zusammenfassung Klein, schön, schnell mit Curses

    den eigenen Scripten eine schöne Oberfläche verleihen Alexander Kluth 15. deutscher Perl-Workshop 2013 Klein, schön, schnell
  2. Einführung Einführung in Curses Zusammenfassung Gliederung 1 Einführung Wieso eigentlich?

    Motivation! Warum Curses? 2 Einführung in Curses Kurze Geschichte zum Aufbau Was Curses::UI ausmacht: Die Widgets, Teil 1 Was Curses::UI ausmacht - Die Widgets, Teil 2 Bindings und Dialoge Klein, schön, schnell
  3. Einführung Einführung in Curses Zusammenfassung Wieso eigentlich? Motivation! Warum Curses?

    Gliederung 1 Einführung Wieso eigentlich? Motivation! Warum Curses? 2 Einführung in Curses Kurze Geschichte zum Aufbau Was Curses::UI ausmacht: Die Widgets, Teil 1 Was Curses::UI ausmacht - Die Widgets, Teil 2 Bindings und Dialoge Klein, schön, schnell
  4. Einführung Einführung in Curses Zusammenfassung Wieso eigentlich? Motivation! Warum Curses?

    Wieso eigentlich? Motivation! Zusammengehackten Tools einfacher benutzbar machen Benutzung für eventuell andere Nutzer intiutiver machen Optische Aufwertung Klein, schön, schnell
  5. Einführung Einführung in Curses Zusammenfassung Wieso eigentlich? Motivation! Warum Curses?

    Wieso eigentlich? Motivation! Zusammengehackten Tools einfacher benutzbar machen Benutzung für eventuell andere Nutzer intiutiver machen Optische Aufwertung Klein, schön, schnell
  6. Einführung Einführung in Curses Zusammenfassung Wieso eigentlich? Motivation! Warum Curses?

    Wieso eigentlich? Motivation! Zusammengehackten Tools einfacher benutzbar machen Benutzung für eventuell andere Nutzer intiutiver machen Optische Aufwertung Klein, schön, schnell
  7. Einführung Einführung in Curses Zusammenfassung Wieso eigentlich? Motivation! Warum Curses?

    Wieso eigentlich? Motivation! Curses::UI ist einfach Gute Dokumentation Geringer Overhead Auch auf Umgebungen ohne X-Server nutzbar Klein, schön, schnell
  8. Einführung Einführung in Curses Zusammenfassung Wieso eigentlich? Motivation! Warum Curses?

    Wieso eigentlich? Motivation! Curses::UI ist einfach Gute Dokumentation Geringer Overhead Auch auf Umgebungen ohne X-Server nutzbar Klein, schön, schnell
  9. Einführung Einführung in Curses Zusammenfassung Wieso eigentlich? Motivation! Warum Curses?

    Wieso eigentlich? Motivation! Curses::UI ist einfach Gute Dokumentation Geringer Overhead Auch auf Umgebungen ohne X-Server nutzbar Klein, schön, schnell
  10. Einführung Einführung in Curses Zusammenfassung Wieso eigentlich? Motivation! Warum Curses?

    Wieso eigentlich? Motivation! Curses::UI ist einfach Gute Dokumentation Geringer Overhead Auch auf Umgebungen ohne X-Server nutzbar Klein, schön, schnell
  11. Einführung Einführung in Curses Zusammenfassung Wieso eigentlich? Motivation! Warum Curses?

    Gliederung 1 Einführung Wieso eigentlich? Motivation! Warum Curses? 2 Einführung in Curses Kurze Geschichte zum Aufbau Was Curses::UI ausmacht: Die Widgets, Teil 1 Was Curses::UI ausmacht - Die Widgets, Teil 2 Bindings und Dialoge Klein, schön, schnell
  12. Einführung Einführung in Curses Zusammenfassung Wieso eigentlich? Motivation! Warum Curses?

    Warum Curses, warum nicht Tk? Warum keine GUI? K urze Antwort Weil wir nix Klicki-Bunti, wir sind Perl-Hacker die mit der Konsole arbeiten Klein, schön, schnell
  13. Einführung Einführung in Curses Zusammenfassung Wieso eigentlich? Motivation! Warum Curses?

    Warum Curses, warum nicht Tk? Warum keine GUI? Lange Antwort: Ziel ist nicht höchste Benutzerfreundlichkeit Eigentlichen Sinn des Programms nicht verschleiern Möglichkeit der Ausführung auf Rechnern ohne X-Server Klein, schön, schnell
  14. Einführung Einführung in Curses Zusammenfassung Wieso eigentlich? Motivation! Warum Curses?

    Warum Curses, warum nicht Tk? Warum keine GUI? Lange Antwort: Ziel ist nicht höchste Benutzerfreundlichkeit Eigentlichen Sinn des Programms nicht verschleiern Möglichkeit der Ausführung auf Rechnern ohne X-Server Klein, schön, schnell
  15. Einführung Einführung in Curses Zusammenfassung Wieso eigentlich? Motivation! Warum Curses?

    Warum Curses, warum nicht Tk? Warum keine GUI? Lange Antwort: Ziel ist nicht höchste Benutzerfreundlichkeit Eigentlichen Sinn des Programms nicht verschleiern Möglichkeit der Ausführung auf Rechnern ohne X-Server Klein, schön, schnell
  16. Einführung Einführung in Curses Zusammenfassung Wieso eigentlich? Motivation! Warum Curses?

    Warum aber dann ausgerechnet Curses(::UI)? Bekannt und »beliebt« Gute Dokumentation Wenig Code, große Wirkung Klein, schön, schnell
  17. Einführung Einführung in Curses Zusammenfassung Wieso eigentlich? Motivation! Warum Curses?

    Warum aber dann ausgerechnet Curses(::UI)? Bekannt und »beliebt« Gute Dokumentation Wenig Code, große Wirkung Klein, schön, schnell
  18. Einführung Einführung in Curses Zusammenfassung Wieso eigentlich? Motivation! Warum Curses?

    Warum aber dann ausgerechnet Curses(::UI)? Bekannt und »beliebt« Gute Dokumentation Wenig Code, große Wirkung Klein, schön, schnell
  19. Einführung Einführung in Curses Zusammenfassung Kurze Geschichte zum Aufbau Was

    Curses::UI ausmacht: Die Widgets, Teil 1 Was Curses::UI ausmacht - Die Widgets, Teil 2 Bindings und Dialoge Gliederung 1 Einführung Wieso eigentlich? Motivation! Warum Curses? 2 Einführung in Curses Kurze Geschichte zum Aufbau Was Curses::UI ausmacht: Die Widgets, Teil 1 Was Curses::UI ausmacht - Die Widgets, Teil 2 Bindings und Dialoge Klein, schön, schnell
  20. Einführung Einführung in Curses Zusammenfassung Kurze Geschichte zum Aufbau Was

    Curses::UI ausmacht: Die Widgets, Teil 1 Was Curses::UI ausmacht - Die Widgets, Teil 2 Bindings und Dialoge Curses::UI und der große Bruder Curses::UI basiert auf dem Paket Curses Curses ist das Interface zur curses(3) Library des Systems Klein, schön, schnell
  21. Einführung Einführung in Curses Zusammenfassung Kurze Geschichte zum Aufbau Was

    Curses::UI ausmacht: Die Widgets, Teil 1 Was Curses::UI ausmacht - Die Widgets, Teil 2 Bindings und Dialoge Curses::UI und der große Bruder Curses::UI basiert auf dem Paket Curses Curses ist das Interface zur curses(3) Library des Systems Klein, schön, schnell
  22. Einführung Einführung in Curses Zusammenfassung Kurze Geschichte zum Aufbau Was

    Curses::UI ausmacht: Die Widgets, Teil 1 Was Curses::UI ausmacht - Die Widgets, Teil 2 Bindings und Dialoge Curses::UI hat viel zu bieten Objektorientiertes Interface Abstraktionsschicht zu Curses Viele Out-of-the-Box Widgets Klein, schön, schnell
  23. Einführung Einführung in Curses Zusammenfassung Kurze Geschichte zum Aufbau Was

    Curses::UI ausmacht: Die Widgets, Teil 1 Was Curses::UI ausmacht - Die Widgets, Teil 2 Bindings und Dialoge Curses::UI hat viel zu bieten Objektorientiertes Interface Abstraktionsschicht zu Curses Viele Out-of-the-Box Widgets Klein, schön, schnell
  24. Einführung Einführung in Curses Zusammenfassung Kurze Geschichte zum Aufbau Was

    Curses::UI ausmacht: Die Widgets, Teil 1 Was Curses::UI ausmacht - Die Widgets, Teil 2 Bindings und Dialoge Curses::UI hat viel zu bieten Objektorientiertes Interface Abstraktionsschicht zu Curses Viele Out-of-the-Box Widgets Klein, schön, schnell
  25. Einführung Einführung in Curses Zusammenfassung Kurze Geschichte zum Aufbau Was

    Curses::UI ausmacht: Die Widgets, Teil 1 Was Curses::UI ausmacht - Die Widgets, Teil 2 Bindings und Dialoge Curses::UI und der große Bruder Curses::UI stellt ein objektorientiertes Interface und eine Abstaktionsschicht zu Curses dar Klein, schön, schnell
  26. Einführung Einführung in Curses Zusammenfassung Kurze Geschichte zum Aufbau Was

    Curses::UI ausmacht: Die Widgets, Teil 1 Was Curses::UI ausmacht - Die Widgets, Teil 2 Bindings und Dialoge Gliederung 1 Einführung Wieso eigentlich? Motivation! Warum Curses? 2 Einführung in Curses Kurze Geschichte zum Aufbau Was Curses::UI ausmacht: Die Widgets, Teil 1 Was Curses::UI ausmacht - Die Widgets, Teil 2 Bindings und Dialoge Klein, schön, schnell
  27. Einführung Einführung in Curses Zusammenfassung Kurze Geschichte zum Aufbau Was

    Curses::UI ausmacht: Die Widgets, Teil 1 Was Curses::UI ausmacht - Die Widgets, Teil 2 Bindings und Dialoge Am Anfang war das Fenster - Curses::UI::Window Das Window-Widget selbst ist ein Widget Weitere Widgets können dem Window-Widget hinzugefügt werden Stellt den Applikations«rahmen« dar use Curses::UI; my $cui = new Curses::UI; my $win = $cui->add( ’mainWindow’, ’Window’ -fg => ’green’ ); Klein, schön, schnell
  28. Einführung Einführung in Curses Zusammenfassung Kurze Geschichte zum Aufbau Was

    Curses::UI ausmacht: Die Widgets, Teil 1 Was Curses::UI ausmacht - Die Widgets, Teil 2 Bindings und Dialoge Am Anfang war das Fenster - Curses::UI::Window Das Window-Widget selbst ist ein Widget Weitere Widgets können dem Window-Widget hinzugefügt werden Stellt den Applikations«rahmen« dar use Curses::UI; my $cui = new Curses::UI; my $win = $cui->add( ’mainWindow’, ’Window’ -fg => ’green’ ); Klein, schön, schnell
  29. Einführung Einführung in Curses Zusammenfassung Kurze Geschichte zum Aufbau Was

    Curses::UI ausmacht: Die Widgets, Teil 1 Was Curses::UI ausmacht - Die Widgets, Teil 2 Bindings und Dialoge Text mich voll - Curses::UI::Label Klassische Label wie in der »großen« GUI-Programmierung Darstellung von Text innerhalb eines Window-Widgets my $label = $win->add( ’helloLabel’, ’Label’, -text => »Hallo Welt!«, -x => 1, -y => 1 ); Klein, schön, schnell
  30. Einführung Einführung in Curses Zusammenfassung Kurze Geschichte zum Aufbau Was

    Curses::UI ausmacht: Die Widgets, Teil 1 Was Curses::UI ausmacht - Die Widgets, Teil 2 Bindings und Dialoge Text mich voll - Curses::UI::Label Klassische Label wie in der »großen« GUI-Programmierung Darstellung von Text innerhalb eines Window-Widgets my $label = $win->add( ’helloLabel’, ’Label’, -text => »Hallo Welt!«, -x => 1, -y => 1 ); Klein, schön, schnell
  31. Einführung Einführung in Curses Zusammenfassung Kurze Geschichte zum Aufbau Was

    Curses::UI ausmacht: Die Widgets, Teil 1 Was Curses::UI ausmacht - Die Widgets, Teil 2 Bindings und Dialoge Und nun alles zusammen - Hallo Welt! Es könnte einfacher nicht sein: #!/usr/bin/perl use strict; use warnings; use Curses::UI; my $cui = new Curses::UI; my $win = $cui->add(’mainWindow’, ’Window’, ’-fg => ’green’); my $label = $win->add(’helloLabel’, ’Label’, -text => »Hallo Welt!«, -x => 1, -y => 1); $cui->set_binding(sub { exit 0; }, »\cC«, »q«); $cui->mainloop(); Klein, schön, schnell
  32. Einführung Einführung in Curses Zusammenfassung Kurze Geschichte zum Aufbau Was

    Curses::UI ausmacht: Die Widgets, Teil 1 Was Curses::UI ausmacht - Die Widgets, Teil 2 Bindings und Dialoge Und nun alles zusammen - Hallo Welt! Es könnte einfacher nicht sein: #!/usr/bin/perl use strict; use warnings; use Curses::UI; my $cui = new Curses::UI; my $win = $cui->add(’mainWindow’, ’Window’, ’-fg => ’green’); my $label = $win->add(’helloLabel’, ’Label’, -text => »Hallo Welt!«, -x => 1, -y => 1); $cui->set_binding(sub { exit 0; }, »\cC«, »q«); $cui->mainloop(); Klein, schön, schnell
  33. Einführung Einführung in Curses Zusammenfassung Kurze Geschichte zum Aufbau Was

    Curses::UI ausmacht: Die Widgets, Teil 1 Was Curses::UI ausmacht - Die Widgets, Teil 2 Bindings und Dialoge Gliederung 1 Einführung Wieso eigentlich? Motivation! Warum Curses? 2 Einführung in Curses Kurze Geschichte zum Aufbau Was Curses::UI ausmacht: Die Widgets, Teil 1 Was Curses::UI ausmacht - Die Widgets, Teil 2 Bindings und Dialoge Klein, schön, schnell
  34. Einführung Einführung in Curses Zusammenfassung Kurze Geschichte zum Aufbau Was

    Curses::UI ausmacht: Die Widgets, Teil 1 Was Curses::UI ausmacht - Die Widgets, Teil 2 Bindings und Dialoge Alles geordnet - Curses::UI::ListBox Ordnen von Elementen in einer Liste my $list = $win->add( "listBox", "Listbox", -fg => "white", -border => 1 ); Hinzufügen von Elementen via ->values(\@arrayMitContent) Klein, schön, schnell
  35. Einführung Einführung in Curses Zusammenfassung Kurze Geschichte zum Aufbau Was

    Curses::UI ausmacht: Die Widgets, Teil 1 Was Curses::UI ausmacht - Die Widgets, Teil 2 Bindings und Dialoge Alles geordnet - Curses::UI::ListBox Ordnen von Elementen in einer Liste my $list = $win->add( "listBox", "Listbox", -fg => "white", -border => 1 ); Hinzufügen von Elementen via ->values(\@arrayMitContent) Klein, schön, schnell
  36. Einführung Einführung in Curses Zusammenfassung Kurze Geschichte zum Aufbau Was

    Curses::UI ausmacht: Die Widgets, Teil 1 Was Curses::UI ausmacht - Die Widgets, Teil 2 Bindings und Dialoge Alles geordnet - Curses::UI::ListBox Ordnen von Elementen in einer Liste my $list = $win->add( "listBox", "Listbox", -fg => "white", -border => 1 ); Hinzufügen von Elementen via ->values(\@arrayMitContent) Klein, schön, schnell
  37. Einführung Einführung in Curses Zusammenfassung Kurze Geschichte zum Aufbau Was

    Curses::UI ausmacht: Die Widgets, Teil 1 Was Curses::UI ausmacht - Die Widgets, Teil 2 Bindings und Dialoge Textsicher - Curses::UI::TextViewer Darstellung von Freitext in einer Box my $text = $main->add( "textBox", "TextViewer", -fg => "white", -border => 1 ); Hinzufügen von Text mit ->text($hinzuzufügenderText) Klein, schön, schnell
  38. Einführung Einführung in Curses Zusammenfassung Kurze Geschichte zum Aufbau Was

    Curses::UI ausmacht: Die Widgets, Teil 1 Was Curses::UI ausmacht - Die Widgets, Teil 2 Bindings und Dialoge Textsicher - Curses::UI::TextViewer Darstellung von Freitext in einer Box my $text = $main->add( "textBox", "TextViewer", -fg => "white", -border => 1 ); Hinzufügen von Text mit ->text($hinzuzufügenderText) Klein, schön, schnell
  39. Einführung Einführung in Curses Zusammenfassung Kurze Geschichte zum Aufbau Was

    Curses::UI ausmacht: Die Widgets, Teil 1 Was Curses::UI ausmacht - Die Widgets, Teil 2 Bindings und Dialoge Textsicher - Curses::UI::TextViewer Darstellung von Freitext in einer Box my $text = $main->add( "textBox", "TextViewer", -fg => "white", -border => 1 ); Hinzufügen von Text mit ->text($hinzuzufügenderText) Klein, schön, schnell
  40. Einführung Einführung in Curses Zusammenfassung Kurze Geschichte zum Aufbau Was

    Curses::UI ausmacht: Die Widgets, Teil 1 Was Curses::UI ausmacht - Die Widgets, Teil 2 Bindings und Dialoge Zusammenfassung - Widgets Widgets haben meist den Aufbau ID, Typ, Optionen Neben den vorgestellten viele Weitere (Kalender, Filebrowser, Progressbar, Radiobuttonbox, TextEditor) Klein, schön, schnell
  41. Einführung Einführung in Curses Zusammenfassung Kurze Geschichte zum Aufbau Was

    Curses::UI ausmacht: Die Widgets, Teil 1 Was Curses::UI ausmacht - Die Widgets, Teil 2 Bindings und Dialoge Zusammenfassung - Widgets Widgets haben meist den Aufbau ID, Typ, Optionen Neben den vorgestellten viele Weitere (Kalender, Filebrowser, Progressbar, Radiobuttonbox, TextEditor) Klein, schön, schnell
  42. Einführung Einführung in Curses Zusammenfassung Kurze Geschichte zum Aufbau Was

    Curses::UI ausmacht: Die Widgets, Teil 1 Was Curses::UI ausmacht - Die Widgets, Teil 2 Bindings und Dialoge Gliederung 1 Einführung Wieso eigentlich? Motivation! Warum Curses? 2 Einführung in Curses Kurze Geschichte zum Aufbau Was Curses::UI ausmacht: Die Widgets, Teil 1 Was Curses::UI ausmacht - Die Widgets, Teil 2 Bindings und Dialoge Klein, schön, schnell
  43. Einführung Einführung in Curses Zusammenfassung Kurze Geschichte zum Aufbau Was

    Curses::UI ausmacht: Die Widgets, Teil 1 Was Curses::UI ausmacht - Die Widgets, Teil 2 Bindings und Dialoge Auf Knopfdruck - Bindings Reaktionen auf Tastendruck kann für verschiedene Widgets eingestellt werden Auf Knopfdruck wird eine vordefinierte Funktion aufgerufen Vorrang hat das Widget, welches den Fokus hat $cui->set_binding(sub { exit 0; }, »\cC«, »q«); Klein, schön, schnell
  44. Einführung Einführung in Curses Zusammenfassung Kurze Geschichte zum Aufbau Was

    Curses::UI ausmacht: Die Widgets, Teil 1 Was Curses::UI ausmacht - Die Widgets, Teil 2 Bindings und Dialoge Auf Knopfdruck - Bindings Reaktionen auf Tastendruck kann für verschiedene Widgets eingestellt werden Auf Knopfdruck wird eine vordefinierte Funktion aufgerufen Vorrang hat das Widget, welches den Fokus hat $cui->set_binding(sub { exit 0; }, »\cC«, »q«); Klein, schön, schnell
  45. Einführung Einführung in Curses Zusammenfassung Kurze Geschichte zum Aufbau Was

    Curses::UI ausmacht: Die Widgets, Teil 1 Was Curses::UI ausmacht - Die Widgets, Teil 2 Bindings und Dialoge Auf Knopfdruck - Bindings Reaktionen auf Tastendruck kann für verschiedene Widgets eingestellt werden Auf Knopfdruck wird eine vordefinierte Funktion aufgerufen Vorrang hat das Widget, welches den Fokus hat $cui->set_binding(sub { exit 0; }, »\cC«, »q«); Klein, schön, schnell
  46. Einführung Einführung in Curses Zusammenfassung Kurze Geschichte zum Aufbau Was

    Curses::UI ausmacht: Die Widgets, Teil 1 Was Curses::UI ausmacht - Die Widgets, Teil 2 Bindings und Dialoge Auf Knopfdruck - Bindings Reaktionen auf Tastendruck kann für verschiedene Widgets eingestellt werden Auf Knopfdruck wird eine vordefinierte Funktion aufgerufen Vorrang hat das Widget, welches den Fokus hat $cui->set_binding(sub { exit 0; }, »\cC«, »q«); Klein, schön, schnell
  47. Einführung Einführung in Curses Zusammenfassung Kurze Geschichte zum Aufbau Was

    Curses::UI ausmacht: Die Widgets, Teil 1 Was Curses::UI ausmacht - Die Widgets, Teil 2 Bindings und Dialoge In Szene gesetzt - Dialoge Vielzahl von Out-of-the-Box-Dialogen (Question, Status, Filebrowser, Calendar) Eigener Dialog mit eigenen Widgets möglich Pro Dialog-Typ eigene Methode Klein, schön, schnell
  48. Einführung Einführung in Curses Zusammenfassung Kurze Geschichte zum Aufbau Was

    Curses::UI ausmacht: Die Widgets, Teil 1 Was Curses::UI ausmacht - Die Widgets, Teil 2 Bindings und Dialoge In Szene gesetzt - Dialoge Vielzahl von Out-of-the-Box-Dialogen (Question, Status, Filebrowser, Calendar) Eigener Dialog mit eigenen Widgets möglich Pro Dialog-Typ eigene Methode Klein, schön, schnell
  49. Einführung Einführung in Curses Zusammenfassung Kurze Geschichte zum Aufbau Was

    Curses::UI ausmacht: Die Widgets, Teil 1 Was Curses::UI ausmacht - Die Widgets, Teil 2 Bindings und Dialoge In Szene gesetzt - Dialoge Vielzahl von Out-of-the-Box-Dialogen (Question, Status, Filebrowser, Calendar) Eigener Dialog mit eigenen Widgets möglich Pro Dialog-Typ eigene Methode Klein, schön, schnell
  50. Einführung Einführung in Curses Zusammenfassung Kurze Geschichte zum Aufbau Was

    Curses::UI ausmacht: Die Widgets, Teil 1 Was Curses::UI ausmacht - Die Widgets, Teil 2 Bindings und Dialoge In Szene gesetzt - Dialoge Beispiel: $question = $cui->question(»Alles gut hier?«); $status = $cui->status(»Alles gut hier!«); Klein, schön, schnell
  51. Einführung Einführung in Curses Zusammenfassung Kurze Geschichte zum Aufbau Was

    Curses::UI ausmacht: Die Widgets, Teil 1 Was Curses::UI ausmacht - Die Widgets, Teil 2 Bindings und Dialoge In Szene gesetzt - Dialoge Beispiel: $question = $cui->question(»Alles gut hier?«); $status = $cui->status(»Alles gut hier!«); Klein, schön, schnell
  52. Einführung Einführung in Curses Zusammenfassung Kurze Geschichte zum Aufbau Was

    Curses::UI ausmacht: Die Widgets, Teil 1 Was Curses::UI ausmacht - Die Widgets, Teil 2 Bindings und Dialoge In Szene gesetzt - Dialoge Beispiel: $question = $cui->question(»Alles gut hier?«); $status = $cui->status(»Alles gut hier!«); Klein, schön, schnell
  53. Einführung Einführung in Curses Zusammenfassung Kurze Geschichte zum Aufbau Was

    Curses::UI ausmacht: Die Widgets, Teil 1 Was Curses::UI ausmacht - Die Widgets, Teil 2 Bindings und Dialoge In Szene gesetzt - Dialoge Komplexere Dialoge sind über die Methode ->dialog() realisierbar: my $ja = $cui->dialog( -message => "Wirklich alles gut?", -buttons => [»Ja«, «Nein«], -values => [1,0], -title => »Jetzt will ich’s aber wissen«, ); if ($ja) { # Alles gut, Wahnsinnscode folgt } Klein, schön, schnell
  54. Einführung Einführung in Curses Zusammenfassung Zusammenfassung Die erste Hauptbotschaft des

    Vortrags in ein bis zwei Zeilen. Die zweite Hauptbotschaft des Vortrags in ein bis zwei Zeilen. Eventuell noch eine dritte Botschaft, aber das reicht dann auch. Ausblick Etwas, was wir noch nicht lösen konnten. Noch etwas, das wir noch nicht lösen konnten. Klein, schön, schnell
  55. Anhang Weiterführende Literatur Weiterführende Literatur I A. Autor. Einführung in

    das Präsentationswesen. Klein-Verlag, 1990. S. Jemand. On this and that. Journal on This and That. 2(1):50–100, 2000. Klein, schön, schnell