- ベストアンサー
Perlでテキストファイル読み込み
基本的な質問ですみません。 サーバ上のテキストファイルを読み込んで ローカルのテキストファイルに書き込むというだけなのですが 何度やってもできません。 以下プログラムですが #!usr/bin/perl open(IN,"http://*****/***/***.txt"); $file = <IN>; close(IN); open(OUT,"> a.txt"); print(OUT "$file"); close(OUT); サーバのアドレスは、URLうってみて見れたのでhttp://***(以下略)であってると思います。 サーバのテキストにはchmodで777と権限を与えました。 プログラムに問題あるのでしょうか。 この場合考えられる原因を教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
ファイル名はルートディレクトリからなので、 open (IN, '/doc_root/aaa.txt'); などのように指定します。同じサーバー上にパールのプログラムが無い場合はhttpを使用します。 perl http で検索してみてください。
その他の回答 (3)
- buffalomasa
- ベストアンサー率66% (70/106)
open関数で開く事のできるファイルは同一サーバだけです。 だから open IN, "http://*****/***/***.txt"; このようにURL指定はできません。 他サーバのファイルを開きたい場合はwgetなどを使います。
お礼
URL指定ができないとは知りませんでした。 調査不足でご迷惑をおかけしました。 また他サーバのときにwgetを活用させていただきます。 ありがとうございました。
- sakusaker7
- ベストアンサー率62% (800/1280)
> open(IN,"http://*****/***/***.txt"); PHPじゃないのでこういうopenはできません。 openするときは問題がなかったか忘れずにチェックしましょう。 open IN, '<', 'http://*****/***/***.txt' or die $!; あと >$file = <IN>; これだと最初の1行だけしか取れません。 > print(OUT "$file"); print(OUT, $file); でOKです。 不要なダブルクォートは使わないようにしましょう。
お礼
いろいろと補足もつけていただきありがとうございます。 Perlの場合はこの記述じゃだめでしたか・・そうとは知らずご迷惑をおかけました。 ご回答ありがとうございました。
読込ができるのかSTDOUTにprintしてみたらどうだろう。 読込ができているなら書込で問題があるのだと思う。 書込側に問題が無いならa.txtが作成されている筈 読込ができている事が確認できていてa.txtが無いならa.txtを格納するディレクトリに「書込権限」が無い。 読込ができていてa.txtができていて内容が正しくない場合はもっと別な所に問題が有る。
お礼
ご回答ありがとうございます。 printはしてみたのですが、表示されなかったので読み込みに問題があったようです。 確認の方法の一つとして以後活用してみます。
お礼
ご回答ありがとうございます。 記述のとおり絶対パスを使ってやったらできました。 もう少しよく考えてやればよかった・・・・orz perl httpも今度検索してみます。ありがとうございました。