Понимание типа выхода из модуля Musicbrainz cpan?

Я использую модуль 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";
 }

Спасибо

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";

Как уже говорилось, это объект 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 версии 1 устарела.

Вам лучше использовать версию 2 веб-службы. В http://python-musicbrainzngs.readthedocs.org/ доступен модуль python, который использует новую (схему следующего поколения) веб-службу.

Другие вопросы по тегам