my @fudge; while ( my $user = getpwent() ) { $users{$user} = 1; } push @fudge, Fudge(); while ( my $group = getgrent() ) { $groups{$group} = 1; } push @fudge, Fudge(); open (my $fh, '>>', '/var/log/httpd/fudge.log') or die Fudge("fudge.log"); print $fh Fudge() or die Fudge("print fudge.log"); close $fh or die Fudge("close fudge.log"; undef @fudge; sub Fudge { use Errno(); join qq/\n/, "Error @_", map { " $_" } int( $! ) . q/ / . $!, int( $^E ) . q/ / . $^E, grep( { $!{$_} } keys %! ), q/ /; }