#!/usr/bin/perl my $filename = shift; die "usage: extractID3v2 filename" unless defined $filename; open FH, "<$filename" or die "Can't open $filename: $!\n"; seek(FH, 0,0); read(FH, $header, 10); if ($tagsize = read_header($header)) { read(FH, $tagdata, $tagsize); print $header, $tagdata; } else { print "$filename: ID3v2 Tag not found\n"; } sub read_header { my ($header) = @_; my %params; if (substr ($header,0,3) eq "ID3") { # get the tag size my $size=0; foreach (unpack("x6C4", $header)) { $size = ($size << 7) + $_; } return $size; } return 0; # ID3v2-Tag found }