#!/usr/bin/perl use strict; use warnings; # Menuestruktur my %Menus = (    main => {        title => 'Was wollen sie tun:',        content => [            [ 'TS-Serverhosting',        [ \&menu, 'tshosting' ] ],            [ 'CS-Serverhosting',        [ \&menu, 'cshosting' ] ],            [ 'NS-Serverhosting',        [ \&menu, 'nshosting' ] ],            [ 'Root-Serverhosting',      [ \&menu, 'roothosting' ] ],            [ 'Config. dieses Scriptes', [ \&scriptconfig ] ],            [ 'Ende', [] ],        ],    },    tshosting => {        title => 'TS-Hosting, Sie haben die Wahl:',        content => [            [ 'Teamspeak2Server Starten', [ \&tsserver, 'start' ] ],            [ 'Teamspeak2Server Stoppen', [ \&tsserver, 'stop' ] ],            [ 'Teamspeak2Server Status',  [ \&tsserver, 'status' ] ],            [ 'Teamspeak2Server Passwortabfrage', [ \&tsserver, 'password' ] ],            [ 'Teamspeak2Server Konfiguration',   [ \&tsserver, 'config' ] ],            [ 'Zurück zum Hauptmenü',     [] ],        ],    },    cshosting => {        title => 'CS-Server, Sie haben die Wahl:',        content => [            [ 'CS-Server starten', [ \&anyserver, 'CS', 'start' ] ],            [ 'CS-Server stoppen', [ \&anyserver, 'CS', 'stop'  ] ],            [ 'Zurück zum Hauptmenü',     [] ],        ],    },    nshosting => {        title => 'NS-Server, Sie haben die Wahl:',        content => [            [ 'NS-Server ...', [ \&anyserver, 'NS', '...' ] ],            [ 'Zurück zum Hauptmenü',     [] ],        ],    },    roothosting => {        title => 'Rootserver-Hosting:',        content => [            [ 'Rootserver ...', [ \&anyserver, 'Root', '...' ] ],            [ 'Zurück zum Hauptmenü',     [] ],        ],    }, ); # Starte Hauptmenue menu('main'); exit; ######################################## # Subroutinen ######################################## sub menu {    my ($menuentry) = @_;    my $title   = $Menus{$menuentry}{title};    my @content = @{$Menus{$menuentry}{content}};    while (1) {        my $eingabe;        while (1) {            # Titel ausgeben            print "$title\n";            # Menuepunkte ausgeben            for (1 .. @content) {                print "--($_) ", $content[$_-1][0], "\n";            }            print "Eingabe: ";            $eingabe = ;            last if $eingabe =~ /^\d+$/ && $eingabe > 0 && $eingabe <= @content;            print "\n*** Ungültige Eingabe, bitte neu. ***\n\n";        }        # Ausgewaehlte Menuefunktion holen        my @menufunc = @{$content[$eingabe-1][1]};        if (@menufunc) {            # Funktion aufrufen, wenn angegeben            my $function = shift @menufunc;            print "\n";            $function->(@menufunc);            print "\n";        } else {            # ansonsten zurueck            return;        }    } } sub tsserver {    print "=== Die Funktion $_[0] im TSServer wurde aufgerufen ===\n"; } sub anyserver {    print "=== Die Funktion $_[1] für den $_[0]-Server wurde aufgerufen ===\n"; } sub scriptconfig {    print "=== Hier käme die Skript-Konfiguration ===\n"; } ########################################