#!/bin/perl # Key: Shortcut im Menü # Value: Array aus Menüpunkttext und Aktion # Aktion kann weiterer Menüpunkt sein, oder Funktion die aufgerufen werden soll # Für Menüpunkt muss ein Hash mit diesem Namen angelegt werden, der ein weiteres # Menü beschreibt. # Für Funktion muss das erste Zeichen eine Raute (#) sein. Eine Funktion mit dem # entspr. Namen muss angelegt sein. # Bei jedem Menüpunkt kann eine Beschreibung angegeben werden, dazu ist bei dem entspr. # Menühash ein Key 'desc' mitanzulegen. Der Value ist ein Skalar der den Menünamen enthält. # Beispielkonfig mit Aufruf #$haupt{'1'} = ['Adressen', 'adressen']; #$haupt{'2'} = ['Sagem', 'sagem']; #$haupt{'3'} = ['Nokia', 'nokia']; #$haupt{'e'} = ['Ende', '#bye']; #$haupt{'desc'} = "Hauptmenü"; #$adressen{'1'} = ['Suchen', '#adr_suchen']; #$adressen{'z'} = ['Zurück', 'haupt']; #$adressen{'desc'} = "Adressen"; #$sagem{'z'} = ['Zurück', 'haupt']; #$sagem{'desc'} = "Sagem"; #$nokia{'z'} = ['Zurück', 'haupt']; #$nokia{'desc'} = "Nokia"; #menue(\%haupt); #use Win32::Console::ANSI; #use Term::ANSIScreen qw/:color :cursor :screen/; package menue; sub zeigen { ($me) = @_; %menu = %$me; do { #print "\e[2J"; my @subst = (['ä','ae'],['ö','oe'],['ü','ue'],['ß','ss'],['Ä','Ae'],['Ö','Oe'],['Ü','Ue']); foreach (@subst) { $menu{'desc'} =~ s/$_->[0]/$_->[1]/g; } print "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n----- $menu{'desc'} -----\n\n"; foreach my $mp (sort keys %menu) { if ($mp eq 'desc') { next; } foreach (@subst) { $menu{$mp}->[0] =~ s/$_->[0]/$_->[1]/g; } print " $mp $menu{$mp}->[0]\n\n"; } print "\nAuswahl:"; $auswahl = ; chomp $auswahl; $ok=0; foreach (sort keys %menu) { if ("$_" eq "$auswahl") { $ok = 1; } } } while (!$ok); $para = "$menu{$auswahl}->[1]"; if ($para =~ /#/) { $para =~ s/#//,$para; $fkt="main::$para"; &$fkt; } else { menue::zeigen("$para"); } } 1;