0

我使用 Musicbrainz cpan 模块来查找专辑,但我在尝试破译收到的输出时遇到了一些问题。我使用 data::Dumper 来查看它,它似乎是某种哈希或数组,但是当我尝试检查类型时遇到了问题。

my $ws = WebService::MusicBrainz::Release->new();

my $response = $ws->search({ TITLE => 'ok computer' });


if (ref($response) eq "REF" || ref($response) eq "SCALAR" || ref($response) eq "ARRAY" || ref($response) eq "HASH" || ref($response) eq "CODE" || ref($response) eq "GLOBE")

 {
 print "\n What sort of thing is it? \n";
 }

谢谢

4

2 回答 2

2

它是一个WebService::MusicBrainz::Response对象。

use WebService::MusicBrainz::Release;

my $ws = WebService::MusicBrainz::Release->new();
my $response = $ws->search({ TITLE => 'ok computer' });
my $release = $response->release(); # grab first one in the list
print $release->title(), " (", $release->type(), ") - ", $release->artist()->name(), "\n";
于 2011-03-20T02:18:53.167 回答
0

如前所述,它是一个WebService::MusicBrainz::Response对象。您可以通过访问 release_list() 来检索多个结果,它给出了WebService::MusicBrainz::Response::Release对象的数组。

use WebService::MusicBrainz::Release;

my $ws = WebService::MusicBrainz::Release->new();
my $response = $ws->search({ TITLE => 'ok computer' });

my @releaselist = $response->release_list();
foreach my $release ( @releaselist ) {
  print $release->title(), " - ", $release->artist()->name(), "\n";
}

但是,该 perl 模块有些未维护,并且它使用的XML Web 服务版本 1已被弃用。

您最好使用Web 服务的第 2 版。使用python-musicbrainzngs有一个可用的 python 模块,它使用新的(下一代方案)Web 服务。

于 2012-12-16T15:58:51.263 回答