Thread Programm am ende wiederholen
(14 answers)
Opened by SCORRPiO at 2014-02-17 17:01
Hier mal ein möglicher Ansatz ohne given/when:
edit: More-Tags; neuen Code hinzugefügt Alter Ansatz: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 #! /usr/bin/perl use strict; use warnings; use feature qw( say ); # Welche Beschriftung soll welche Aktion auslösen my %dispatch = ( 'Tabelle anzeigen' => \&show_table, 'Daten eintragen' => \&insert_data, 'Daten aendern' => \&change_data, 'Programm verlassen' => \&exit_programm, ); # Reihenfolge der Beschriftungen festlegen my @order = ( '', # dummy, um index 0 zu belegen 'Tabelle anzeigen', 'Daten eintragen', 'Daten aendern', 'Programm verlassen', ); # definieren nun die subroutinen für die Aktionen sub show_table { say "Schau, eine Tabelle.\n"; } sub insert_data { say "Tragen Sie Daten ein.\n"; } sub change_data { say "Machen Sie hier Ihre Daten kaputt.\n"; } sub exit_programm { # Aufräumen; DB schließen, etc. say "Programm ist zuende.\n"; exit 0; } # Hauptprogramm while ( 1 ) { say "Datenbank Verwaltung\n"; say "Was möchten Sie tun?"; # Menue ausgeben printf "%2d) %s\n", $_, $order[$_] for 1 .. $#order; # Eingabe lesen und vom Newline befreien chomp( my $input = <STDIN> ); # nur Integer erlaubt; und nur im Bereich von 1 bis $#order (letzter Index in @order) if ( $input !~ m/\A\d+\z/ || $input > $#order || $input < 1 ) { warn "Eingabe ungueltig.\n"; redo; } else { # rufe subroutine $dispatch{ $order[$input] }->(); } } Neuer Ansatz mit nur einer Struktur (Array of Hash) für das Menue: Code: (dl
)
1 #! /usr/bin/perl [/mode] Last edited: 2014-02-18 17:25:21 +0100 (CET) meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen! |