空っぽが返ってくる?
LWP::Simple
のget()
とかでhttpsから始まるURLを取得しようとすると、エラーも何もなく、空っぽが返ってきてしまう場合があります。
これは、そもそもSSL対応のモジュールが入ってない可能性があります。
#!/usr/bin/perl -- use strict; use LWP::Simple; print get('https://www.google.co.jp/'); # 何も出力されない・・!
尚、get()
直後にprint $@
するとProtocol scheme 'https' is not supported
みたいなエラーメッセージが確認できるかもしれません。
つまり、LWP::Simple
でSSLがサポートされてない、ということです。
httpsもサポートしてよ!
基本的にサーバ側に必要モジュールをインストールすると、上記スクリプトで正常に取得できるようになります。
yum install perl-Net-SSLeay yum install perl-Crypt-SSLeay yum install perl-IO-Socket-SSL
または、cpanm
が使える環境ならこれでもOK↓
cpanm Net::SSLeay cpanm Crypt::SSLeay cpanm IO::Socket::SSL
但し、yumパッケージをインストールしてもうまくいかない場合があります。これは LWP::Protocol::https
モジュールが入っていない可能性がありますので、そういう時はcpanm
とかcpan
で別途インストールしてください。
cpanm LWP::Protocol::https
それでもダメっぽい!
うーん。もしかしてOpenSSLのパッケージが足りてないのかもしれません。以下yum
コマンドを実行してみてください。
また、念のためアップデートしておくと吉です。
yum install openssl yum install openssl-devel yum update openssl*
というか、上記のopenssl-devel
パッケージが入っていないと、そもそもcpanm
がコケるみたいです。
お試しあれ。