#! /usr/bin/perl use strict; use warnings; use feature qw( say ); my @menu = ( { label => 'Tabelle anzeigen', action => \&show_table, }, { label => 'Daten eintragen', action => \&insert_data, }, { label => 'Daten aendern', action => \&change_data, }, { label => 'Programm verlassen', action => \&exit_program, }, ); # 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_program { # 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", $_, $menu[$_]->{label} for 1 .. $#menu; # Eingabe lesen und vom Newline befreien chomp( my $input = ); # nur Integer erlaubt; und nur im Bereich von 1 bis $#menu (letzter Index in @menu) if ( $input !~ m/\A\d+\z/ || $input > $#menu || $input < 1 ) { warn "Eingabe ungueltig.\n"; redo; } else { # rufe subroutine $menu[$input]->{action}->(); } }