Perl脚本的ID3Info问题

时间:2011-04-17 03:40:12

标签: perl

我正在尝试从ID3标签获取MP3文件的信息。

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 个答案:

答案 0 :(得分:4)

让我向您介绍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的文档中显示的示例中逐字复制的。

答案 1 :(得分:3)

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

您忘记使用;终止上述行。

是的,当然,你应该使用一个模块来解析标签。