Class::DBI is a nice module that I've used previously. Its similar to Alzabo in terms of what it does but it is much smaller (and has many fewer features) but its still quite useful.
package Song;
use base qw(Class::DBI);
__PACKAGE__->set_db( 'Main', 'dbi:mysql', 'username', 'password' );
__PACKAGE__->table('Song');
__PACKAGE__->columns( All => qw( song_id title artist album year genre
+ ) );
__PACKAGE__->columns( Primary => 'song_id' );
package main;
find sub {
return unless m/\.mp3$/;
my $tag = get_mp3tag($_) or return;
Song->create($tag);
}, @ARGV;