#!/perl/bin/perl # !!!! Especially when learning, you should use these: use strict; use warnings; sub adduser{ print "\nI am in the adduser array now"; } #create the array my @data = ( { query => 'First Name',}, # !!!! Removed "{ query => 'Firt Name', }," { query => 'School', }, { query => 'Phone', }, { query => 'Position', }, { query => 'Role', }, ); MAIN_LOOP: while (1) { #greeting system("cls"); print "iT For Dominica User Database:\n", "Enter the Number then enter the value.\n"; #number the amt of items in list # !!!! Much easier to read: for my $i (0 .. $#data) { print "\t", $i+1, ". ", $data[$i]{query}, ": ", $data[$i]{value} || "", "\n"; } print "\t0. Done\n"; # !!!! Added loop to simplify error handling. foreach ('once') { print "Type a number to choose to change: "; my $number = ; chomp($number); if ($number eq "" || $number eq "0") { last MAIN_LOOP; } # !!!! Make sure it's a number! # !!!! Removed hardcoded "6". if ($number =~ /[^0-9]/ || $number > @data ) { print("Bad input!"); redo; # Ask again. } } --$number; print "\n\nPlease enter your ", $data[$number]{query}, ": "; chomp($data[$number]{value} = ); } # !!!! Still don't know what this adduser stuff is suppose to do. # !!!! Cleaned up this loop. foreach my $field (@data) { my $query = $field->{query}; my $value = $field->{value}; if (defined($field->{value}) && $field->{value} ne "") { print("$query: $value\n"); } }