package gnump3d::oggtagreader; # untested sub new { bless \(undef), shift } sub get_tags { my($self, $filename) = @_; # using lexical filehandles is much safer # die()ing here is probably not the best way to handle failures here open(my ($fh), "<", $filename) or return; binmode $fh; read $fh, my ($buffer), 2048; $buffer =~ s/[[:^print:]]/=/g; my %info = map +($_ => /$_=([^=]+)/i), qw(artist title album comment genre tracknumber); $info{track} = delete $info{tracknumber} if exists $info{tracknumber}; return %info; } 1;