$allowed{action} = 'post|edit|delete|long|short'; $query->{action} eq "post" ? ($allowed{msgid} = '^(\d+|new)$') && ($allowed{data} = '^(([^|+]*[^|]+.*\|){4}[^|+]*[^|]+.*)$'):1; $query->{action} eq "edit" ? $allowed{msgid} = '^(\d+|new)$':1; $query->{action} eq "delete" ? $allowed{msgid} = '^(\d+)$':1; $query->{action} eq "long" ? ($allowed{sort} = '^(author|date|subject|expire)$') && ($allowed{msgid} = '^(\d*|all)$'):1; $query->{action} eq "short" ? ($allowed{sort} = '^(author|date|subject|expire)$') && ($allowed{msgid} = '^(\d+|all)$'):1; foreach $key (keys %$query) { exists $allowed{$key} ? 1 : return 0; return 0 if $query->{$key}!~/$allowed{$key}/; 1; }