in reply to simple menu loop problems

This is one way of achieving your goal, i'm assuming the end outcome won't be to print what option you have selected.
#!/usr/bin/perl -w use strict; check_input(); sub check_input { CHECK : while (1) { &menu; my $input= (<STDIN>); chomp $input; print "You have chosen option 1\n" if ($input == 1); print "You have chosen option 2\n" if ($input == 2); print "You have chosen option 3\n" if ($input == 3); print "You have chosen option 4\n" if ($input == 4); print "You have chosen option 5\n" if ($input == 5); print "You have chosen option 6\n" if ($input == 6); last CHECK if ($input == 7); } print "Finished\n"; } sub menu { print "Enter a number for the option you want\n"; print "1) Cancel FINAL Schedule for machine A: \n"; print "2) Submit new FINAL schedule: \n"; print "3) Ignore Wrkld: \n"; print "4) Run around the block: \n"; print "5) Buy a new car: \n"; print "6) order Pizza: \n\n"; print "7) exit: \n\n"; }
Hope that helps

Replies are listed 'Best First'.
Re: Re: simple menu loop problems
by particle (Vicar) on Mar 12, 2002 at 16:50 UTC
    save yourself some typing, ropey!

    print "You have chosen option $input\n" if ($input >= 1 && $input <= 6 +);

    ~Particle ;Þ

      I would agree however .... what happens if the code changes to call different functions instead of printing ??? I was presuming the code supplied was an example ! :)
        Then you use a dispatch (or lookup) table:
        my %choice = ( 1 => 'stuff', 2 => 'more stuff', ... ); print $choice{$input}, "\n"; # hey, let's make functions now! my %choice = ( 1 => \&stuff, 2 => \&more_stuff, ... ); &{$choice{$input}};
        See Re: How to write long programms? for more.

        jeffa

        'Welcome to the next level of laziness!'