1

Web リンクから開いている JSON ファイルに問題があります。ローカルの kml ファイルを開くために使用したものからコードを調整したので、問題は perl が json を処理したり、オンライン ファイルを開いたりする別の方法である可能性があります...?

'$input{place}' は私の html フォームから来ています

$inputname = $input{place};
$sjson ="http://api.geonames.org/searchJSON?q=$inputname&maxRows=1&username=rsgs";
open INPUT, "<$sjson";
  $sjsoncont.=<INPUT>;  
  close INPUT;

$sjsoncont を印刷してテストすると、空ですか? なんで?

4

2 に答える 2

5

リモート URL を単純に「開く」ことはできません。このタスクには LWP::UserAgent または LWP::Simple を使用します。例えば:

use LWP::Simple;
my $sjsoncont = get "http://api.geonames.org/searchJSON?q=Berlin&maxRows=1&username=rsgs";

ところで、open() を使用している場合は、常に戻り値を確認する必要があります。

open my $INPUT, "<", $file or die "Can't open $file: $!";

(またはuse autodie)

于 2013-07-11T19:34:49.863 に答える
3

次を使用してこれを行うことができますIO::All

use IO::All;
my $sjson < io->http("http://api.geonames.org/searchJSON?q=$inputname&maxRows=1&username=rsgs");
print $sjson;

これを使用するには、インストールしIO::All::HTTPます。cpan IO::All::HTTPこれを行うには、コマンド ラインから実行します。

warnings と strict を使用しているようには見えません。perl を開発するには、実際にそれを行う必要があります。あなたが書くすべてのスクリプトは、

use strict;
use warnings;

また、理解できない perl のエラーが発生した場合は、次のエラーを追加します。

use diagnostics;
于 2013-07-11T20:14:45.113 に答える