#!/usr/bin/perl use strict; use warnings; open my $ogg_file, '<', shift or die $!; binmode($ogg_file); read_ogg_header($ogg_file); sub read_ogg_header { my ( $file ) = @_; read($file, my $buf, 28 ); my ( $ogg_magic, $ogg_version, $flags, $granule_position, $serial_number, $sequence_number, $checksum, $total_segments, $segment_size ) = unpack('C4 C1 C1 C8 C4 C4 C4 C1 C1', $buf); print $ogg_magic; ### Expected it to print 'OggS' } #### 0x4F6767530002000000000000000083CA3DC0000000009F59730A0113