in reply to Re: Uninitialized value from hostname()
in thread Uninitialized value from hostname()

That line of code is within a subroutine that writes to the daemon log. I'm also fairly new to Perl. I have experience with other languages, but Perl is... different :)

# Get our hostname for logging and notifications our $host = hostname(); # Subroutine to append a new MRTG entry to the daemon log sub write_mrtg_log{ my( $arg1, $arg2 ) = @_; my $log_entry = defined $arg1 ? $arg1 : 'Empty Log Entry'; my $log_entry_category = defined $arg2 ? $arg2 : 'SCHEDULER'; my $daemon_log_timestamp = localtime()->strftime('%b %d %H:%M:%S'); open(my $fd, ">>/var/log/daemon"); print $fd $daemon_log_timestamp.' '.our $host.' mrtg[]: ['.$log_entr +y_category.']: '.$log_entry.'.'."\n"; close $fd; }

I'm still trying to understand our, my, and local. I honestly don't understand why I need to put 'our' in front of a variable just because it is within an IF/ELSE block. I can understand isolating a subroutine or referenced module, but having it also for IF/ELSE, WHILE, etc. is confusing me. At this point it seems like 'our' creates a global? Or is it preferred to just pass everything as arguments to subroutines?

Yes, the command you gave me (it needed a hyphen?) is returning the hostname consistently. The daemon log entries also use the value and they have it filled in most of the time. The exceptions are during network outages, which I've no idea how they're related yet.

Thanks for the suggestions on cleaning up the syntax. I'm still learning how to write Perl well, and I appreciate any advice.