PERLBEOS(1) Perl Programmers Reference Guide PERLBEOS(1)NAME
README.beos - Perl version 5.8+ on BeOS
DESCRIPTION
This file contains instructions how to build Perl under BeOS and lists known problems.
BUILD AND INSTALL
Requirements
I have built and tested Perl 5.8.6 and 5.9.1 under BeOS R5 x86 net server. I can't say anything with regard to PPC. Since Perl 5.8.0 had
been released for BeOS BONE, I suspect, there is a good chance, that it still compiles on a BONE system. The only change I've made, that
affects BONE systems is the recognition of whether it is a BONE system or not in "hints/beos.sh". Now network socket support should remain
enabled on BONE systems. This might as well break the build, though.
As more recent versions of autoconf require flock() support, I wrote a flock() emulation (flock_server) and released it on BeBits:
http://www.bebits.com/app/4030
If you want to build a Perl with flock() support, you have to install this package first.
Configure
With flock() support:
CFLAGS=-I/path/to/flock/server/headers ./configure.gnu
--prefix=/boot/home/config
Replace "/path/to/flock/server/headers" with the path to the directory containing the "flock.h" header.
Without flock() support:
./configure.gnu --prefix=/boot/home/config
Build
With flock() support:
make LDLOADLIBS="-lnet -lflock"
Without flock() support:
make LDLOADLIBS="-lnet"
"-lnet" is needed on net server systems only and if the compiler doesn't add it automatically (Be's R5 gcc does, Oliver Tappe's gcc 2.95.3
does not).
Install
Install all perl files:
make install
Create a symlink for libperl:
cd ~/config/lib; ln -s perl5/5.8.6/BePC-beos/CORE/libperl.so .
Replace 5.8.6 with your respective version of Perl.
KNOWN PROBLEMS
o Network socket support is disabled for BeOS R5 net server. I didn't dare yet to try enabling it and see what problems occur.
o The LFS (large file support) tests ("t/op/lfs" and "xt/Fcntl/t/syslfs") are disabled as seeking beyond 2 GB is broken according to
jhi@iki.fi who was the last one checking the BeOS port and updating this file before me. Haven't checked this myself.
o The "t/io/fflush" test fails at #6. As far as I can tell, this is caused by a bug in the BeOS pipes implementation that occurs when
starting other child processes. In the particular test case a "system("perl -e 0")" flushes the stdout pipe of another child process.
o The "ext/POSIX/t/waitpid" test fails at #1. After all child processes are gone BeOS' waitpid(-1,...) returns 0 instead of -1 (as it
should). No idea how to fix this.
CONTACT
For BeOS specifics problems feel free to mail to: Ingo Weinhold <bonefish@cs.tu-berlin.de>
Last update: 2004-12-16
perl v5.8.9 2007-11-17 PERLBEOS(1)
Check Out this Related Man Page
Fcntl(3pm) Perl Programmers Reference Guide Fcntl(3pm)NAME
Fcntl - load the C Fcntl.h defines
SYNOPSIS
use Fcntl;
use Fcntl qw(:DEFAULT :flock);
DESCRIPTION
This module is just a translation of the C fcntl.h file. Unlike the old mechanism of requiring a translated fcntl.ph file, this uses the
h2xs program (see the Perl source distribution) and your native C compiler. This means that it has a far more likely chance of getting the
numbers right.
NOTE
Only "#define" symbols get translated; you must still correctly pack up your own arguments to pass as args for locking functions, etc.
EXPORTED SYMBOLS
By default your system's F_* and O_* constants (eg, F_DUPFD and O_CREAT) and the FD_CLOEXEC constant are exported into your namespace.
You can request that the flock() constants (LOCK_SH, LOCK_EX, LOCK_NB and LOCK_UN) be provided by using the tag ":flock". See Exporter.
You can request that the old constants (FAPPEND, FASYNC, FCREAT, FDEFER, FEXCL, FNDELAY, FNONBLOCK, FSYNC, FTRUNC) be provided for
compatibility reasons by using the tag ":Fcompat". For new applications the newer versions of these constants are suggested (O_APPEND,
O_ASYNC, O_CREAT, O_DEFER, O_EXCL, O_NDELAY, O_NONBLOCK, O_SYNC, O_TRUNC).
For ease of use also the SEEK_* constants (for seek() and sysseek(), e.g. SEEK_END) and the S_I* constants (for chmod() and stat()) are
available for import. They can be imported either separately or using the tags ":seek" and ":mode".
Please refer to your native fcntl(2), open(2), fseek(3), lseek(2) (equal to Perl's seek() and sysseek(), respectively), and chmod(2)
documentation to see what constants are implemented in your system.
See perlopentut to learn about the uses of the O_* constants with sysopen().
See "seek" in perlfunc and "sysseek" in perlfunc about the SEEK_* constants.
See "stat" in perlfunc about the S_I* constants.
perl v5.18.2 2013-11-04 Fcntl(3pm)