我正在尝试从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.
有人可以就此错误的含义提出建议吗?我需要安装什么软件包?
答案 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'"
您忘记使用;
终止上述行。
是的,当然,你应该使用一个模块来解析标签。