_END }

close NEW or die "write error in $podtmp: $!\n";
close POD or die "read error in $pod: $!\n";

if($changes) { rename $podtmp, $pod or die "rename $podtmp $pod: $!" }
else         { unlink $podtmp       or die "unlink $podtmp: $!"  }
}

sub produce_table($) { my $table = shift;

my @rows;

warn "TABLE $table\n"; if($table eq 'confstr') { my @names = confstr_names; foreach my $name (sort @names) { my $val = confstr $name; push @rows, [ $name, defined $val ? "'$val'" : 'undef' ] } } elsif($table eq 'sysconf') { my @names = sysconf_names; foreach my $name (sort @names) { my $val = sysconf $name; push @rows, [ $name, defined $val ? $val : 'undef' ] } } elsif($table eq 'pathconf') { my @names = pathconf_names; foreach my $name (sort @names) { my $val = pathconf __FILE__, $name; push @rows, [ $name, defined $val ? $val : 'undef' ] } } elsif($table eq 'rlimit') { my @names = rlimit_names; foreach my $name (sort @names) { my ($soft, $hard, $success) = getrlimit $name; $soft //= 'undef'; $hard //= 'undef'; push @rows, [ $name, sprintf "%-25s %s", $soft, $hard ] } } elsif($table eq 'ulimit') { my @names = ulimit_names; foreach my $name (sort @names) { my $val = $name =~ m/GET/ ? ulimit $name : '(setter)'; push @rows, [ $name, defined $val ? $val : 'undef' ] } }

else { return }

my $longest_name = 0;
($longest_name < length $_->[0]) && ($longest_name = length $_->[0])
    for @rows;

my @lines;
foreach (@rows)
{   my ($name, $value) = @$_;
    $name .= ' ' x ($longest_name - length $name);
    push @lines, "  $name   $value\n";
}

@lines;
}