Thread Startscript: Kleines Problem mit meinen Ideen ein Tea
(34 answers)
Opened by
Gast
at 2005-05-15 07:04
User since 2003-08-04
2145
Artikel
ModeratorIn + EditorIn
[quote=BoSSSpy,22.05.2005, 11:45]
Schreibt doch mal ein Auswahlmenu wie:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
#################################### Was wollen sie tun: --(1)TS-Serverhosting --(2)CS-Serverhosting --(3)NS-Serverhosting --(4)Root-Serverhosting --(5)Config. dieses Scriptes Eingabe:1 ...
TS-Hosting, sie haben die Wahl: --(1)Teamspeak2Server Starten --(2)Teamspeak2Server Stoppen --(3)Teamspeak2Server Status --(4)Teamspeak2Server Passwordabfrage --(5)Teamspeak2Server Config --(6)Zurück zum Hauptmenu Eingabe:6 ####################################
[/quote]
Gerne, aber dazu nutze ich weder endlos verschachtelte ifs, noch (*oerks*) gotos, sondern eine allgemeine Menuefunktion und eine passende Datenstruktur:
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 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109
#!/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 = <STDIN>; 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"; }
########################################
QuoteHier macht es Sinn ein "goto" zu setzen ...
Noe.
Quotedas ganze millionfach ineinander zu ver-if-schachteln würde zu stressig sein ... besonders dann wenn ich das Scipt denn erweitern will, sprich ähm nen StarCraft-Server oder sonst was zu installieren.
Das waere fast noch bloedsinniger.
QuoteIch red ja nicht davon das goto ne schleife abschaffen soll ... aber sie macht 100% Sinn auch ohne nen C64!
Sehr, sehr selten. Und hier ist kein Fall dafuer. Jedenfalls nicht, wenn man nur den Hauch von strukturierter Programmierung anwenden moechte!
View full thread Startscript: Kleines Problem mit meinen Ideen ein Tea
|