You want to add information to the system log from a Perl program.
Use the Perl module Sys::Syslog, which implements the API described in the sidebar, The syslog API.
syslog-demo.pl
#!/usr/bin/perl
use Sys::Syslog qw(:DEFAULT setlogsock);
use File::Basename;
my $count = 0;
my $host = "some-machine";
setlogsock("unix");
openlog(basename($0), "pid", "local3");
syslog("warning", "%d connections from %s", $count, $host);
syslog("authpriv|err", "intruder alert!");
syslog("err", "can't open configuration file: %m");
closelog( );
The system logger by default refuses to accept network connections (assuming you have not used the syslogd -r option). Unfortunately, the Perl module uses network connections by default, so our recipe calls setlogsock to force the use of a local socket instead. If your syslog messages seem to be disappearing into thin air, be sure to use setlogsock. Recent versions of Sys::Syslog resort to a local socket if the network connection fails, but use of setlogsock for reliable operation is a good idea, since the local socket should always work. Note that setlogsock must be explicitly imported.
Perl scripts can pass the %m format specifier to syslog to include system error messages, as an alternative to interpolating the $! variable. Be sure to use %m (or $!) only when a system error has occurred, to avoid misleading messages.
Sys::Syslog(3pm), syslog(3).