It looks to me like you may have your logic backwards. For any list of with more than one name, it will always print "not valid". I suspect that you meant something like
if input_name is in list:
print "valid"
else:
print "not valid"
This could be implemented with the following code:
if (grep(/^$input$/, @names) {
print "Valid\n";
} else {
print "Not valid\n";
}
There are a number of other areas that could be cleaned up. For example, you probably should read the list of valid names before getting your name to test. A little more consistency in your use of brackets would also make your code easier to figure out (both for you and for us.)