.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{ . if \nF \{ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "File::RandomAccess 3pm" .TH File::RandomAccess 3pm "2014-01-02" "perl v5.20.1" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" File::RandomAccess \- Random access reads of sequential file or scalar .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 1 \& use File::RandomAccess; \& \& $raf = new File::RandomAccess(\e*FILE, $disableSeekTest); \& \& $raf = new File::RandomAccess(\e$data); \& \& $err = $raf\->Seek($pos); \& $num = $raf\->Read($buff, $bytes); .Ve .SH "DESCRIPTION" .IX Header "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. .SH "METHODS" .IX Header "METHODS" .IP "\fBnew\fR" 4 .IX Item "new" Creates a new RandomAccess object given a file reference or reference to data in memory. .Sp .Vb 2 \& # Read from open file or pipe \& $raf = new File::RandomAccess(\e*FILE); \& \& # Read from data in memory \& $raf = new File::RandomAccess(\e$data); .Ve .RS 4 .IP "Inputs:" 4 .IX Item "Inputs:" 0) Reference to RandomAccess object or RandomAccess class name. .Sp 1) File reference or scalar reference. .Sp 2) Flag set if file is already random access (disables automatic SeekTest). .IP "Returns:" 4 .IX Item "Returns:" Reference to RandomAccess object. .RE .RS 4 .RE .IP "\fBSeekTest\fR" 4 .IX Item "SeekTest" Performs test \fIseek()\fR on file to determine if buffering is necessary. If the \fIseek()\fR fails, then the file is buffered to allow random access. \&\fBSeekTest\fR() is automatically called from \fBnew\fR unless specified. .Sp .Vb 1 \& $result = $raf\->SeekTest(); .Ve .RS 4 .IP "Inputs:" 4 .IX Item "Inputs:" 0) Reference to RandomAccess object. .IP "Returns:" 4 .IX Item "Returns:" 1 if seek test passed (ie. no buffering required). .IP "Notes:" 4 .IX Item "Notes:" Must be called before any other i/o. .RE .RS 4 .RE .IP "\fBTell\fR" 4 .IX Item "Tell" Get current position in file .Sp .Vb 1 \& $pos = $raf\->Tell(); .Ve .RS 4 .IP "Inputs:" 4 .IX Item "Inputs:" 0) Reference to RandomAccess object. .IP "Returns:" 4 .IX Item "Returns:" Current position in file .RE .RS 4 .RE .IP "\fBSeek\fR" 4 .IX Item "Seek" Seek to specified position in file. When buffered, this doesn't quite behave like \fIseek()\fR since it returns success even if you seek outside the limits of the file. .Sp .Vb 1 \& $success = $raf\->Seek($pos, 0); .Ve .RS 4 .IP "Inputs:" 4 .IX Item "Inputs:" 0) Reference to RandomAccess object. .Sp 1) Position. .Sp 2) Whence (0=from start, 1=from cur pos, 2=from end). .IP "Returns:" 4 .IX Item "Returns:" 1 on success, 0 otherwise .RE .RS 4 .RE .IP "\fBRead\fR" 4 .IX Item "Read" Read data from the file. .Sp .Vb 1 \& $num = $raf\->Read($buff, 1024); .Ve .RS 4 .IP "Inputs:" 4 .IX Item "Inputs:" 0) Reference to RandomAccess object. .Sp 1) Buffer. .Sp 2) Number of bytes to read. .IP "Returns:" 4 .IX Item "Returns:" Number of bytes actually read. .RE .RS 4 .RE .IP "\fBReadLine\fR" 4 .IX Item "ReadLine" Read a line from file (end of line is $/). .RS 4 .IP "Inputs:" 4 .IX Item "Inputs:" 0) Reference to RandomAccess object. .Sp 1) Buffer. .IP "Returns:" 4 .IX Item "Returns:" Number of bytes read. .RE .RS 4 .RE .IP "\fBSlurp\fR" 4 .IX Item "Slurp" Read whole file into buffer, without changing read pointer. .RS 4 .IP "Inputs:" 4 .IX Item "Inputs:" 0) Reference to RandomAccess object. .IP "Returns:" 4 .IX Item "Returns:" Nothing. .RE .RS 4 .RE .IP "\fBBinMode\fR" 4 .IX Item "BinMode" Set binary mode for file. .RS 4 .IP "Inputs:" 4 .IX Item "Inputs:" 0) Reference to RandomAccess object. .IP "Returns:" 4 .IX Item "Returns:" Nothing. .RE .RS 4 .RE .IP "\fBClose\fR" 4 .IX Item "Close" Close the file and free the buffer. .RS 4 .IP "Inputs:" 4 .IX Item "Inputs:" 0) Reference to RandomAccess object. .IP "Returns:" 4 .IX Item "Returns:" Nothing. .RE .RS 4 .RE .SH "AUTHOR" .IX Header "AUTHOR" Copyright 2003\-2014 Phil Harvey (phil at owl.phy.queensu.ca) .PP This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIImage::ExifTool\fR\|(3pm)