The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.


SWF::Header - extract header information from SWF files.


  use SWF::Header;
  my $header_data = SWF::Header->read_file('/path/to/file.swf');
  my $header_data = SWF::Header->read_data($binary_data);
  my $h = SWF::Header->new();
  my %headers = map { $_ => $h->read_file($_) } @files;


SWF::Header pulls the descriptive information out of the header of a shockwave (.swf) file. It returns a hashref of height, width, duration, framerate, shockwave version and file size.



Creates a reader object. You don't normally need to call the constructor directly unless you want to read several files. Either read_file or read_data will construct an object to do the work if called as a class method.

stream( $stream )

A set or get method that can be used to provide an SWF::BinStream::Read object you want to work with. If none is supplied or exists already, calls new_stream to create a new one.


Resets the reader's stream to a new SWF::BinStream::Read object, ready to start from scratch. Both read_file and read_data call this method before handing over to parse_header.

read_file( $file )

Opens and reads the first few bytes of the file supplied (as either a filehandle or a path), uses them to start a new stream then calls parse_header.

read_data( $string )

Just for consistency. All this does is start a new stream with the data supplied and call parse_header.

parse_header( $string )

Checks that this is a properly-formatted SWF file, then pulls the relevant bytes out of the header block of the file and returns a hashref containing the stage dimensions, coordinates, duration, frame rate, version and file size. In detail:

    signature => 'FWS' or 'CWS',
    version => Shockwave language version,
    filelen => Length of entire file in bytes,
    xmin => Stage left edge, in twips,
    xmax => Stage right edge, in twips from left,
    ymin => Stage top edge,
    ymax => Stage bottom edge, in twips from top,
    rate => Frame rate in fps,
    count => total number of frames in movie,
    width => calculated width of stage (in pixels),
    height => calculated height of stage (in pixels),
    duration => calculated duration of movie (in seconds),
    background => calculated background color of movie (in html format),


Copyright 2004 William Ross (

But obviously based entirely on previous work by Yasuhiro Sasama.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.


SWF::File, SWF::Parser, SWF::BinStream, SWF::Element

The SWF file format specification from Macromedia can be found at

1 POD Error

The following errors were encountered while parsing the POD:

Around line 170:

You forgot a '=back' before '=head1'