perl audio::wma读取wma文件信息...
时间:2010-08-14 来源:llmlx
直接上代码吧。奇怪的问题是总是没有办法显示中文信息。折腾半天原来不是用encoding utf8,而是gb2312。而且很重要的是要有这行代码
Audio::WMA->setConvertTagsToUTF8(1);
#!/usr/bin/perl use strict; use Audio::WMA; use File::Find; use encoding "gb2312"; my $debug = 0; my $count = 0; sub getMusicName{ if($_ =~ /.+\.wma/i && $count < 1){ $count++; my $file = $File::Find::name; my $wma = Audio::WMA->new($file); my $tags = $wma->tags(); if($debug){ foreach (keys %$tags) { print "$_ : $tags->{$_}\n"; } } my $title = $wma->tags("title"); $title =~ s/^\s*\d+\s*\.*//; #remove digit and . my $newFileName = $File::Find::dir ."/" .$title .".wma"; print $file, " => ", $newFileName, "\n"; rename($file, $newFileName); } } #Audio::WMA->setDebug(0); Audio::WMA->setConvertTagsToUTF8(1); my $dir = "E:/Music/20090711/"; find \&getMusicName, ($dir);
另外遇到的问题就是怎么调用rename修改原始文件的文件名,当然新的文件名是包含中文的。怎么改都是乱码,奇怪,尽管我已经print出来是正常的中文。