in reply to "Action" variables and form data
$q->delete('action'); $q->param( -name => 'action', -value => 'update' );
CGI.pm does NOT swap the values in the $q object, but APPENDS them. substitute $action for @action, and you'll see what's happening. CGI.pm has silently converted your scalar value to a list value, and 'enter' is always the first in the list.