• ベストアンサー

ローカルPC上に対象ファイルを自動保存

Web上にある保存用ファイル (通常、そのハイパーリンクを右クリックして、 「対象をファイルに保存」とするタイプのもの。 テキストファイル以外にもバイナリファイル等もある) をPerlスクリプトを使って、 ローカルPC上へ指定ファイル名で保存させる方法 があれば教えてください。 例えば、(みようみまねですが) 次のようなスクリプトが動いてくれたらと思います。 よろしくお願いします。 ------------------------------------------ #!perl use LWP::Simple; if(@ARGV < 2){ print "Usage: $0 http-addr filename\n"; exit(0); } my $URL = $ARGV[0]; my $SAVEFILE = $ARGV[1]; my $target = get $URL; open(OUT,">$SAVEFILE") || die "$SAVENAME $! stopped"; print OUT $target; close(OUT); 以上、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

希望とは違うかもしれないけれども、 UNIX だったらwget が使える。 (windows で、)LWP がインストールされていれば lwp-download コマンドがインストールされていて これが質問者の作りたいスクリプトと同じ機能を有する lwp-download url savefilename で実行。

supob
質問者

補足

ご回答ありがとうございました。 C:\Perl\bin>dir : 2004/12/11 06:03 8,772 lwp-download 2005/06/06 14:00 9,190 lwp-download.bat これらのバッチファイルことだったんですね。 ちょっと試してみます。

その他の回答 (5)

noname#19175
noname#19175
回答No.6

原因がわからないことには何も出来ないので、 my $target=get $URL; if(!$target){ die "get error $!"; } みたいな感じでエラーの内容を調べてみてはいかがでしょうか? http://がついてなかったら、$!の内容も空になるようですが。

supob
質問者

補足

なるほど!、$!で状況が分かるのですね。 やってみます。ありがとうございます。

  • bgbg
  • ベストアンサー率53% (94/175)
回答No.5

入力するURLの頭に"http://"はついていますか?

supob
質問者

お礼

はい。付いています。 下の方への回答でも記しましたが、 lwp-download.bat を使うと、指定ファイルの保存ができましたので、URLの指定としては間違っていないと思っています。 ありがとうございました。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.4

#2>サイズが0のファイルが出来るだけでした。 #2>$targetをprintで標準出力させてみても、何も表示されませんでした #3>ieのGUIインタフェースで右クリック→対象をファイルに保存、とすると、中身のあるファイルがダウンロードできています) 変ですね、 なんかブロックされているのかもしれませんね。 もし、問題なければ、そのダウンロード先のURLを補足していただけませんか?

supob
質問者

お礼

lwp-download.bat を使うと、画像でも取れました! ありがとうございました。 上記、自作スクリプトの方は、まだ理由が分かりません。 ターゲットのURLはローカルのものなので、こちらへ示しても意味が無いので、代替えの場所を探してみます。 とりいそぎ、ご連絡が遅れました。ありがとうございました。

noname#19175
noname#19175
回答No.3

> ローカルPC上へ指定ファイル名で保存させる方法 保存する方法ではなく、保存”させる”方法、、、、ですか? このスクリプトは、ほかのサーバーにあるファイルを、Perlでダウンロード(保存)するものですが、、、

supob
質問者

補足

紛らわしい表現ですみません。 指定したURLにあるダウンロード用のファイルを 指定したローカルPC上のファイルとしてダウンロード保存したい ということを言っておりました。 上記のスクリプトでは、空のファイルしか出来ないのですが、(そもそものURL側には実際にファイルがあります。→ieのGUIインタフェースで右クリック→対象をファイルに保存、とすると、中身のあるファイルがダウンロードできています)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

要は、 print OUT $target; の前に binmode OUT; すればいいだけだと思う。

supob
質問者

補足

何度もありがとうございます。 やってみたのですが、サイズが0のファイルが出来るだけでした。 (binmode OUT;をしても、しなくても) 試しに、get後の $targetをprintで標準出力させてみても、何も表示されませんでした。

関連するQ&A