use Getopt::Long; use Data::Dumper; my %menu; my @root = ( \%menu, qw[add! remove! die! warn!] ); PROMPT: print "what u want(add remove die warn)?: "; while(<>){ chomp; $_ = "-$_" unless /^-/; # fake it local @ARGV = $_; undef %menu; if(GetOptions( @root )){ print "\n\n", Dumper \%menu; if(exists $menu{add}) { print "\n\nadding\n\n"; } elsif(exists $menu{remove}) { print "\n\nremoving\n\n"; } elsif(exists $menu{warn}) { warn "\n\nwarning\n\n"; } elsif(exists $menu{die}) { die "\n\ndying!\n\n"; } }else{ warn "\n\nerror parsing options [$!][$@]\n\n"; } goto PROMPT; } __END__