私は現在、ランドサットのシーンのいくつかのバッチのダウンロードは空間座標に基づいて設定するためにUSGSのEarthExplorerで働いています。彼らはhttps://earthexplorer.usgs.gov/inventory/example/json-download_data-plでこれを行う素晴らしい手軽なスクリプトを提供します。これはすばらしいです。私は、クラスタ上で働いている、と私は、私は次の出力を取得するスクリプトを実行すると、正常にすべてのPerlモジュールをインストールするにもかかわらず:不正な形式のJSON文字列Perlを使用してearthexplorer
Running Script...
Error: Error: malformed JSON string, neither array, object, number, string or
atom, at character offset 0 (before "LWP will support htt...") at ./dl.pl line 182
これは好奇心が強いようです。説明の方法として、スクリプトが
#!/usr/bin/perl
#use strict;
use warnings;
use 5.010;
use JSON;
use Scalar::Util qw(looks_like_number reftype dualvar);
use LWP::UserAgent;
use Getopt::Long qw(GetOptions);
my ($username, $password);
$username = "myusername_filled_in";
$password = "mypassword_filled_in";
GetOptions(
'username=s' => \$username,
'password=s' => \$password,
) or die "Error retrieving Username and Password\n";
で始まり、コードの問題のビットは、私は次のことを行っているCan't run Perl script on other computerにおいて非常に有用なアドバイスに続いて
$res = $response->{_content};
$res = decode_json $res;
です:
問題のコード領域で
$response->content
から$response->decoded_content(charset => 'none')
に変更されました。エラーなし -だけで、完全なWebページを引き戻さ
lwp-request https://google.com/
蘭。そう、それは働いているようです。はその後
LWP will support https URLs if the LWP::Protocol::https module is installed.
そして、確かに、LWP ::議定:: HTTPSがインストールされているエラーを投げたprint $response->decoded_content(charset => 'none');
を挿入して、いくつかのデバッグを参照しようとしました。
ユーザー名とパスワードを定義したようなもの(変数が宣言された後はちょうど$username = "myusername";
など)または別のものがasinineなのではないかと思います。
は、誰がこのに実行していますか?
以下のクエリからの出力を追加するには:あなたのコードはエラーをチェックしません
$ which cpan ; head -n 1 `which cpan` ; echo 'o conf' | cpan | grep -P 'make|mbuild' ; set | grep ^PERL ; which perl ; perl -le'use LWP::Protocol::https; print "ok";'
/share/pkg/perl/5.10.1/bin/cpan
#!/share/pkg/perl/5.10.1/bin/perl
make [/usr/bin/make]
make_arg []
make_install_arg []
make_install_make_command [/usr/bin/make]
makepl_arg []
mbuild_arg []
mbuild_install_arg []
mbuild_install_build_command [./Build]
mbuildpl_arg []
PERL5LIB=/home/jb92b/perl5/lib/perl5:/home/jb92b/perl5/lib/perl5:/home/jb92b/perl5/lib/perl5
PERL_LOCAL_LIB_ROOT=/home/jb92b/perl5:/home/jb92b/perl5:/home/jb92b/perl5
PERL_MB_OPT='--install_base "/home/jb92b/perl5"'
PERL_MM_OPT=INSTALL_BASE=/home/jb92b/perl5
/share/pkg/perl/5.10.1/bin/perl
ok
を使用する必要がありますすることができこのPerlスクリプトの最初の部分を質問に追加しますか? – raina77ow
要求に応じて編集https://earthexplorer.usgs.gov/inventory/example/json-download_data-pl – jebyrnes
LWPの主張には、 :Protocol :: httpsがインストールされています – ikegami