File::RandomAccess(3) User Contributed Perl Documentation
NAME
File::RandomAccess - Random access reads of sequential file or scalar
SYNOPSIS
use File::RandomAccess;
$raf = File::RandomAccess->new(\*FILE, $disableSeekTest);
$raf = File::RandomAccess->new(\$data);
$err = $raf->Seek($pos);
$num = $raf->Read($buff, $bytes);
DESCRIPTION
Allows random access to sequential file by buffering the file if
necessary. Also allows access to data in memory to be accessed as if
it were a file.
METHODS
new Creates a new RandomAccess object given a file reference or
reference to data in memory.
# Read from open file or pipe
$raf = File::RandomAccess->new(\*FILE);
# Read from data in memory
$raf = File::RandomAccess->new(\$data);
Inputs:
0) Reference to RandomAccess object or RandomAccess class name.
1) File reference or scalar reference.
2) Flag set if file is already random access (disables
automatic SeekTest).
Returns:
Reference to RandomAccess object.
SeekTest
Performs test seek() on file to determine if buffering is
necessary. If the seek() fails, then the file is buffered to allow
random access. SeekTest() is automatically called from new unless
specified.
$result = $raf->SeekTest();
Inputs:
0) Reference to RandomAccess object.
Returns:
1 if seek test passed (ie. no buffering required).
Notes:
Must be called before any other i/o.
Tell
Get current position in file
$pos = $raf->Tell();
Inputs:
0) Reference to RandomAccess object.
Returns:
Current position in file
Seek
Seek to specified position in file. When buffered, this doesn't
quite behave like seek() since it returns success even if you seek
outside the limits of the file.
$success = $raf->Seek($pos, 0);
Inputs:
0) Reference to RandomAccess object.
1) Position.
2) Whence (0=from start, 1=from cur pos, 2=from end).
Returns:
1 on success, 0 otherwise
Read
Read data from the file.
$num = $raf->Read($buff, 1024);
Inputs:
0) Reference to RandomAccess object.
1) Buffer.
2) Number of bytes to read.
Returns:
Number of bytes actually read.
ReadLine
Read a line from file (end of line is $/).
Inputs:
0) Reference to RandomAccess object.
1) Buffer.
Returns:
Number of bytes read.
Slurp
Read whole file into buffer, without changing read pointer.
Inputs:
0) Reference to RandomAccess object.
Returns:
Nothing.
BinMode
Set binary mode for file.
Inputs:
0) Reference to RandomAccess object.
Returns:
Nothing.
Close
Close the file and free the buffer.
Inputs:
0) Reference to RandomAccess object.
Returns:
Nothing.
OPTIONS
NoBuffer
Avoid buffering sequential files.
$raf->{NoBuffer} = 1;
When this option is set, old data is purged from the internal
buffer before a read operation on a sequential file. In this mode,
memory requirements may be significantly reduced when reading
sequential files, but seeking backward is limited to within the
size of the internal buffer (which will be at least as large as the
last returned data block), and seeking relative to the end of file
is not allowed.
AUTHOR
Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
This library is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.
SEE ALSO
Image::ExifTool(3)
perl v5.34.3 2024-01-22 File::RandomAccess(3)
image-exiftool 12.870.0 - Generated Sat Aug 17 15:52:06 CDT 2024
