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オブジェクトです。WebService::MusicBrainz::Response::Releaseオブジェクトの配列を提供する release_list() にアクセスして、複数の結果を取得できます。

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は推奨されていません。

バージョン 2の Web サービスを使用することをお勧めします。python-musicbrainzngsには、新しい (次世代スキーム) Web サービスを使用する Python モジュールが用意されています。

于 2012-12-16T15:58:51.263 に答える