---
name: "perlfreebsd"
section: "1"
platform: "linux"
package: "perl-doc"
version: "5.40.1-6+deb13u1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/perlfreebsd"
---

# perlfreebsd(1)

Perl version 5 on FreeBSD systems

## NAME

perlfreebsd - Perl version 5 on FreeBSD systems

## DESCRIPTION

This document describes various features of FreeBSD that will affect how Perl version 5 (hereafter just Perl) is compiled and/or runs.

### FreeBSD core dumps from readdir\_r with ithreads

When perl is configured to use ithreads, it will use re-entrant library calls in preference to non-re-entrant versions.  There is a bug in FreeBSD's `"readdir_r"` function in versions 4.5 and earlier that can cause a SEGV when reading large directories. A patch for FreeBSD libc is available (see \<https://bugs.freebsd.org/bugzilla/show\_bug.cgi?id=30631\>) which has been integrated into FreeBSD 4.6.

### $^X doesn't always contain a full path in FreeBSD

perl sets `$^X` where possible to a full path by asking the operating system. On FreeBSD the full path of the perl interpreter is found by using `"sysctl"` with `"KERN_PROC_PATHNAME"` if that is supported, else by reading the symlink */proc/curproc/file*. FreeBSD 7 and earlier has a bug where either approach sometimes returns an incorrect value (see \<https://bugs.freebsd.org/bugzilla/show\_bug.cgi?id=35703\>). In these cases perl will fall back to the old behaviour of using C's `"argv[0]"` value for `$^X`.

## AUTHOR

Nicholas Clark \<nick@ccl4.org\>, collating wisdom supplied by Slaven Rezic and Tim Bunce.

Please report any errors, updates, or suggestions to \<https://github.com/Perl/perl5/issues\>.
