Понимание типа выхода из модуля 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, который использует новую (схему следующего поколения) веб-службу.