in reply to Uninitialized value from hostname()

Are you sharing this variable with other modules? If not, replace our with my. Does this: perl MSys::Hostname -E 'say hostname();' return consistently?

...and this looks odd...

print $fd $daemon_log_timestamp.' '.our $host.' mrtg[]:['.$log_entry_c +ategory.']: '.$log_entry.'.'."\n";

Why are you using our $host here? That doesn't make any sense that I can see ;) Another thing, is that in double-quotes, Perl variables "interpolate":

print $fd "$daemon_log_timestamp $host mrtg[]:[$log_entry_category]: $ +log_entry\n";

Replies are listed 'Best First'.
Re^2: Uninitialized value from hostname()
by eepstein (Initiate) on Oct 13, 2016 at 20:17 UTC

    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.