0

私はperlに精通しておらず、irssi翻訳スクリプトを編集しようとしています。Webリクエストの結果は、次のように返されます。

$result = {
 "data" => {
  "translations" => [
   {
    "translatedText" => "Halloween"
   }
  ]
 }
}

TranslatedText部分のみをフェッチするにはどうすればよいですか?

$string = 'Halloween'

ありがとう。

4

2 に答える 2

7

「ハロウィーン」は次のように取得できます。

$result->{"data"}->{"translations"}->[0]->{"translatedText"}

最初の矢印の後の矢印は省略できるため、さらに短いバリアントは次のようになります。

$result->{"data"}{"translations"}[0]{"translatedText"}

基本的に、さまざまなレベルで複数の間接化があります。

  • ハッシュへの参照
  • その「データ」キーは別のハッシュへの参照です
  • 配列への参照である最後のハッシュの「translations」キー
  • その配列の最初の要素はハッシュへの参照です
  • そのハッシュの「translatedText」キーは文字列です
于 2011-11-25T12:40:07.377 に答える
2

それは

$result->{data}->{translations}->[0]->{translatedText};

$resultハッシュ参照です。キー 'data' はさらに別のハッシュ ref を指しています。このハッシュ ref には、配列 ref を指すキー 'translations' があります。その配列 ref の最初で唯一の要素には、対象のデータ「Halloween」を指すキー「translatedText」があります。

于 2011-11-25T12:39:48.063 に答える