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

# sysseek

Perl 5 version 10.1 documentation
Go to top

# sysseek

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

- sysseek FILEHANDLE,POSITION,WHENCE

  Sets FILEHANDLE's system position in bytes using the system call lseek(2). FILEHANDLE may be an expression whose value gives the name of the filehandle. The values for WHENCE are `0` to set the new position to POSITION, `1` to set the it to the current position plus POSITION, and `2` to set it to EOF plus POSITION (typically negative).

  Note the in bytes: even if the filehandle has been set to operate on characters (for example by using the `:encoding(utf8)` I/O layer), tell() will return byte offsets, not character offsets (because implementing that would render sysseek() very slow).

  sysseek() bypasses normal buffered IO, so mixing this with reads (other than `sysread`, for example `<>` or read()) `print`, `write`, `seek`, `tell`, or `eof` may cause confusion.

  For WHENCE, you may also use the constants `SEEK_SET` , `SEEK_CUR` , and `SEEK_END` (start of the file, current position, end of the file) from the Fcntl module. Use of the constants is also more portable than relying on 0, 1, and 2. For example to define a "systell" function:

      	use Fcntl 'SEEK_CUR';	sub systell { sysseek($_[0], 0, SEEK_CUR) }

  Returns the new position, or the undefined value on failure. A position of zero is returned as the string `"0 but true"` ; thus `sysseek` returns true on success and false on failure, yet you can still easily determine the new position.

Recently read

Tools

- Preferences