Проблема ID3Info со скриптом Perl - PullRequest
0 голосов
/ 17 апреля 2011

Я пытаюсь получить информацию о файле MP3 из тегов ID3.

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]/;

Однако это возвращает следующую ошибку:
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.

Может кто-нибудь посоветовать, что означает эта ошибка? Какой пакет мне нужно установить?

Ответы [ 2 ]

4 голосов
/ 17 апреля 2011

Позвольте мне представить вам 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();

Этот код выше (почти) дословно скопирован из примеров, показанных в документации MP3::Tag.

3 голосов
/ 17 апреля 2011
my $artist = "id3info \"$output_file\" | grep '^=== TPE1' | sed -e 's/.*: //g'"

Вы забыли завершить вышеуказанную строку с помощью ;.

Да, конечно, вы должны использовать модуль для разбора тегов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...