我在使用网络链接打开的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进行测试时它是空的?为什么呢?
答案 0 :(得分:5)
您不能简单地“打开”远程网址。使用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
)
答案 1 :(得分: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
来执行此操作。
看起来你没有使用警告和严格。要开发perl,你真的必须这样做。您编写的每个脚本都应以
开头use strict;
use warnings;
另外,如果您遇到不理解的perl错误,请添加以下错误:
use diagnostics;