using psi::esp, I bet you're trying to get an id3 tag on a directory, maybe . or ..
try changing
my ($title, $artist, $mp3_file);
foreach my $file (@file_names) {
$mp3_file = new MP3::ID3v1Tag("$file");
$title = $mp3_file->get_title();
$artist = $mp3_file ->get_artist();
print "$title - artist\n";
}
to
my ($title, $artist, $mp3_file);
foreach my $file (@file_names) {
print "now working with file '$file'\n";
# remove mp3_file from the my declaration outside the loop
my $mp3_file = new MP3::ID3v1Tag("$file");
die "Can't create id tag : $!" unless $mp3_file;
$title = $mp3_file->get_title();
$artist = $mp3_file ->get_artist();
print "$title - artist\n";
}
to get a more detailed error message. Also use -d to determine if $file is really a directory and take appropriate action.