• ベストアンサー

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と権限を与えました。 プログラムに問題あるのでしょうか。 この場合考えられる原因を教えてください。

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

  • ベストアンサー
  • masaota56
  • ベストアンサー率41% (58/139)
回答No.4

ファイル名はルートディレクトリからなので、 open (IN, '/doc_root/aaa.txt'); などのように指定します。同じサーバー上にパールのプログラムが無い場合はhttpを使用します。 perl http で検索してみてください。

homman
質問者

お礼

ご回答ありがとうございます。 記述のとおり絶対パスを使ってやったらできました。 もう少しよく考えてやればよかった・・・・orz perl httpも今度検索してみます。ありがとうございました。

その他の回答 (3)

回答No.3

open関数で開く事のできるファイルは同一サーバだけです。 だから open IN, "http://*****/***/***.txt"; このようにURL指定はできません。 他サーバのファイルを開きたい場合はwgetなどを使います。

homman
質問者

お礼

URL指定ができないとは知りませんでした。 調査不足でご迷惑をおかけしました。 また他サーバのときにwgetを活用させていただきます。 ありがとうございました。

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

> open(IN,"http://*****/***/***.txt"); PHPじゃないのでこういうopenはできません。 openするときは問題がなかったか忘れずにチェックしましょう。 open IN, '<', 'http://*****/***/***.txt' or die $!; あと >$file = <IN>; これだと最初の1行だけしか取れません。 > print(OUT "$file"); print(OUT, $file); でOKです。 不要なダブルクォートは使わないようにしましょう。

homman
質問者

お礼

いろいろと補足もつけていただきありがとうございます。 Perlの場合はこの記述じゃだめでしたか・・そうとは知らずご迷惑をおかけました。 ご回答ありがとうございました。

noname#39970
noname#39970
回答No.1

読込ができるのかSTDOUTにprintしてみたらどうだろう。 読込ができているなら書込で問題があるのだと思う。 書込側に問題が無いならa.txtが作成されている筈 読込ができている事が確認できていてa.txtが無いならa.txtを格納するディレクトリに「書込権限」が無い。 読込ができていてa.txtができていて内容が正しくない場合はもっと別な所に問題が有る。

homman
質問者

お礼

ご回答ありがとうございます。 printはしてみたのですが、表示されなかったので読み込みに問題があったようです。 確認の方法の一つとして以後活用してみます。

関連するQ&A