#!/usr/bin/perl use strict; use warnings; use Getopt::Long; use MP3::Info; use Data::Dumper; use Encode; my $gbk; my $convert; my @exclusive; my $result = GetOptions ( "gbk" => \$gbk, "convert" => \$convert, "x=s" => \@exclusive, ); die "Usage error" unless $result; $gbk = 1 if defined $convert; my $regexp; $regexp = "(?:" . join("|", @exclusive) . ")" if @exclusive; for my $file (@ARGV) { print $file, "\n"; my $info = get_mp3tag($file, 1); if (defined $gbk) { for my $key (keys %$info) { unless (defined $regexp and $key =~ /$regexp/o) { $info->{$key} = encode("utf8", decode("cp936", $info->{$key})); } else { $info->{$key} = encode("utf8", $info->{$key}); } } } if (defined $convert) { set_mp3tag($file, $info); } else { while (my ($key, $value) = (each %$info)) { $value = encode("utf8", $value) unless defined $gbk; print "$key: ", $value, "\n"; } print "\n"; } }