in reply to Server 500

foreach my $name ( @names ) { my $value = $query->param( $name ); } my $organisers_name=('organisers_name'); ...
Not sure what you are trying to there, but something like
my %param_hash = $query->Vars; # later, perhaps after some validation <p1>$param_hash{organisers_name}<br>
might be worth considering. I haven't seen a <p1> tag before, is that a typo?

And, as others have suggested, keep an eye on the error logs.

updated: gave the param_hash the correct sigil

updated 2: You are missing the print $q->header; line too. That could be the cause of your 500 error.