|
NAMEStream::Reader - is a stream readerSYNOPSIS# Input stream can be reference to TYPEGLOB or SCALAR, output stream # can be the same types or undefined # Constructor $stream = Stream::Reader->new( \*IN, { Limit => $limit, BuffSize => $buffsize, Mode => 'UB' } ); # Reading all before delimiter beginning from current position. # Delimiter is SCALAR or reference to array with many SCALAR's. # Returns true value on succesfull matching or if end of stream # expected at first time $bool = $stream->readto( $delimiter, { Out => \*OUT, Limit => $limit, Mode => 'AIE' } ); # Reading fixed number of chars beginning from current position. # Returns true value if was readed number of chars more then zero or # end of stream was not expected yet $bool = $stream->readsome( $limit, { Out => \*OUT, Mode => 'A' } ); # Mode is string, what can contains: # U - modificator for constructor. disable utf-8 checking # B - modificator for constructor. enable second buffer for speed up # case insensitive search # A - modificator for readto() and readsome(). appending data to # output stream, if stream is SCALAR # I - modificator for readto(). enable case insensitive search # E - modificator for readto(). at end of input stream alltimes # returns false value $number = $stream->{Total}; # total number of readed chars $number = $stream->{Readed}; # number of readed chars at last # operation (without matched string # length at readto() method) $number = $stream->{Stored}; # number of succesfully stored chars # at last operation $string = $stream->{Match}; # matched string at last operation # (actually for readto() only) $bool = $stream->{Error}; # error status. true on error DESCRIPTIONThis is utility intended for reading data from streams. Can be used for "on the fly" parsing big volumes data.METHODS
Limit - limit size of input stream data in
characters. If this parameter is absent, not defined or less then zero, then
all data from input stream will be available for reading.
BuffSize - size of buffer in characters. If this parameter is absent, not defined or less then zero, then will be used default buffer size 32768 characters. Mode - is string with letters-modificators: B - use second buffer. Can really speed up search
in case insensitive mode.
U - disable UTF-8 data check in UTF-8 mode. Use this flag if you are absolutely sure, that your UTF-8 data is valid.
Out - is a reference to file stream, opened for
writing, or reference to string. If this parameter is absent then data will
not stored.
Limit - size in characters. Defines, the maximum number of characters that must be stored in Out. If this paramter is absent, not defined or less then zero, then this method will be trying to store all readed data. Mode - is string with letters-modificators: A - appendig data to Out if Out is a reference to
string.
I - search in case insensitive mode. E - at the end of input stream returns only false value. Without this modificator, if end of stream expected at first time, then will be returned true value.
Out - the same as in readto() method.
Mode - is string with letters-modificators: A - the same as in readto() method.
UTF-8 SUPPORTFully supported when using perl version 5.8.1, or higher. Input stream, output stream and delimiters should be in UTF-8 mode. If, during reading data from input stream in UTF-8 mode, will be detected malformed data, then will be stoped any operations and status Error turned to true value.WARNINGSRemember! This class is using block reading and before destruct class-object, you should work with input stream only through these class methods.In UTF-8 mode search without case sensitive is very slowly.. It is because operation of changing case on UTF-8 data has slow speed. Remember, in UTF-8 mode all sizes of this module contain characters, not bytes! EXAMPLES
CREDITSSpecial thanks to:
AUTHORAndrian Zubko aka Ondr, <ondr@cpan.org>
Visit the GSP FreeBSD Man Page Interface. |