2011-04-17 6 views
0

J'essaie d'obtenir les informations d'un fichier MP3 à partir de tags ID3.Problème ID3Info avec le script Perl

my $output_file = `ls | egrep '\.flac$|\.mp3$'`; 
$output_file = "$output_folder\/$output_file"; 
my $artist = "id3info \"$output_file\" | grep '^=== TPE1' | sed -e 's/.*: //g'" 
my $album = "id3info \"$output_file\" | grep '^=== TALB' | sed -e 's/.*: //g'"; 
my $format = "MP3"; 
my $bitrate = "id3info \"$output_file\" | grep 'Bitrate' | sed -e 's/.*: //g'"; 
my $genretags = "id3info \"$output_file\" | grep '=== TCON' | sed -e 's/.*: //g', mix, auto.up"; 
$genretags =~ tr/[A-Z]/[a-z]/; 

Cependant ceci renvoie l'erreur suivante:
syntax error at mp3.pl line 88, near "my " Global symbol "$album" requires explicit package name at mp3.pl line 88. Global symbol "$album" requires explicit package name at mp3.pl line 173.

Quelqu'un pourrait-il donner des conseils sur ce que cela signifie erreur? Quel paquet dois-je installer?

Répondre

4

Permettez-moi de vous présenter MP3::Tag

use MP3::Tag; 

my $mp3 = MP3::Tag->new($filename); 

# get some information about the file in the easiest way 
my($title, $track, $artist, $album, $comment, $year, $genre) = $mp3->autoinfo(); 

Ce code ci-dessus a été copié (presque) in extenso des exemples présentés dans la documentation de MP3::Tag.

3
my $artist = "id3info \"$output_file\" | grep '^=== TPE1' | sed -e 's/.*: //g'" 

Vous avez oublié de terminer la ligne ci-dessus avec un ;. Oui, bien sûr, vous devriez utiliser un module pour analyser les étiquettes.

+1

ohh, merci. J'essaie aussi MP3 :: Tag maintenant. Semble un peu plus propre :) – Dean

+0

_ [Dean] (http://stackoverflow.com/users/422687/dean) _: De rien. Un module spécialisé est la voie à suivre. :-) –