in reply to If statement wont branch

I get errors on all the lines using param:
my $writer = param{'writer'}; my $title = param{'title'}; my $text = param{'text'}; my $current = param{'current'};
Perhaps you'd like to look more closely at the CGI docs, and call the param function (or call the param method on your CGI) instead of passing a hash array reference to param?
my $writer = param('writer') # or my $writer = $cgi->param('writer'); # etc.
Update:Your calls are parsing to this:
my $var = param({'this'});
So perl is interpreting your argument as a hash array reference with one key and no value.