Manual

- Overview
- Tutorials
- FAQs
- History / Changes
- License

Reference

- Language
- Functions
- Operators
- Special Variables
- Pragmas
- Utilities
- Internals
- Platform Specific

Modules

- A • B • C • D • E
- F • G • H • I • L
- M • N • O • P • S
- T • U • X

News / Blogs

- Perl Buzz
- Perl Iron Man
- Perlsphere
- Planet Perl
- TPF news
- Use Perl

See also

- CPAN
- Perl.org
- Perl.com
- Perl 5 Wiki
- Perl Jobs
- Perl Mongers
- Perl Monks

Contact

- Site designed and maintained by Jon Allen (JJ)
- http://perl.jonallen.info

- View the project page and FAQs

# fcntl

Perl 5 version 10.1 documentation
Go to top

# fcntl

Perl functions A-Z | Perl functions by category | The 'perlfunc' manpage

- fcntl FILEHANDLE,FUNCTION,SCALAR

  Implements the fcntl(2) function. You'll probably have to say

          use Fcntl;

  first to get the correct constant definitions. Argument processing and value return works just like `ioctl` below. For example:

          use Fcntl;    fcntl($filehandle, F_GETFL, $packed_return_buffer)	or die "can't fcntl F_GETFL: $!";

  You don't have to check for `defined` on the return from `fcntl`. Like `ioctl`, it maps a `0` return from the system call into `"0 but true"` in Perl. This string is true in boolean context and `0` in numeric context. It is also exempt from the normal -w warnings on improper numeric conversions.

  Note that `fcntl` will produce a fatal error if used on a machine that doesn't implement fcntl(2). See the Fcntl module or your fcntl(2) manpage to learn what functions are available on your system.

  Here's an example of setting a filehandle named `REMOTE` to be non-blocking at the system level. You'll have to negotiate `$|` on your own, though.

          use Fcntl qw(F_GETFL F_SETFL O_NONBLOCK);    $flags = fcntl(REMOTE, F_GETFL, 0)                or die "Can't get flags for the socket: $!\n";    $flags = fcntl(REMOTE, F_SETFL, $flags | O_NONBLOCK)                or die "Can't set flags for the socket: $!\n";

Recently read

Tools

- Preferences