It looks like the Perl syslog module has some issues on SunOS. These issues might have been fixed but for me updating is not an option as this server is owned by another department in the company. What I ended up doing was just using the logger command line utility. This is far from ideal but does work. The code here closes the logger for each call but it could easily be kept open. The problem with keeping it open is that you can't change the severity.
open(my $fh, "| logger -p $facility.$severityName");
print $fh $logmsg . "\n";
close($fh);
The other option would be call the syslog API but I'm a bit over this and just need something that works at this stage :-)