File::Format::RIFF::Chunk - a single RIFF chunk


   use File::Format::RIFF;

   my ( $chunk ) = new File::Format::RIFF::Chunk;
   $chunk->id( 'stuf' );
   $chunk->data( 'here is some stuff' );

   ... some $container ...

   $container->push( $chunk );


A File::Format::RIFF::Chunk is a single chunk of data in a RIFF file. It has an identifier and one piece of scalar data. The id must be a four character code, and the data can be any piece of scalar data you wish to store, in any format (it is treated as opaque binary data, so you must interpret it yourself).


$chunk = new File::Format::RIFF::Chunk( $id, $data );

Creates a new File::Format::RIFF::Chunk object. $id is a four character code that identifies the type of data. If $id is not specified, it defaults to ' ' (four spaces). $data is a scalar, treated as opaque binary data. If $data is undef or not specified, it defaults to ''.


$id = $chunk->id;

Returns the id of $chunk.

$chunk->id( 'abcd' );

Sets the id of $chunk. $id must be a four character code that identifies the type of data.

$data = $chunk->data;

Returns the data of $chunk.

$chunk->data( $data );

Sets the data of $chunk. $data is treated as a piece of opaque binary data, not modified or interpreted in any way.

$size = $chunk->size;

Returns the size (in bytes) of $chunk's data.

$total_size = $chunk->total_size;

Returns the total size (in bytes) that $chunk will take up when written out to a file. Total size is the size of the data, plus 8 bytes for the header, plus 1 alignment byte if the data has an odd number of bytes (so that the RIFF chunks will be word-aligned on disk).

$chunk->dump( $max );

Prints a string representation of $chunk to STDOUT. If the data is larger than $max bytes, prints '[...]' instead of the actual data. If $max is not specified or undef, it defaults to 64.

A RIFF chunk is rendered as:

id: <id> size: <size> (<total size>): <data>


Paul Sturm <>