• ベストアンサー

file操作について

読み込んだファイルが空のファイルだったとき、 つまり、ファイルは存在するがファイルは0バイトのモノを読み込んだとき エラーをだすのはどんな条件で分岐させれば良いでしょうか。 ちなみにperlです。

  • CGI
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • HUTABA
  • ベストアンサー率27% (436/1611)
回答No.1

if (-s $File) {  open (FILE, "$File");  :  : } として、読み込む「前」にファイルサイズを確認してはどうでしょう? if (-s $File)は、「ファイルサイズが0でなければ」という分岐です。

参考URL:
http://tohoho.wakusei.ne.jp/wwwperl1.htm#FileTest
mulala
質問者

お礼

有難うございます。 なるほど。そうですね。 今になって気がついたのですが(汗)一番聞きたかった事を質問し忘れていました(汗 今作っているスクリプトの操作上、改稿文字(\n)が残ってしまう事があると思うんです。つまり、ファイルの中身を正規表現で書くと file.log ======================================= 一行目の内容\n二行目の内容\n三行目の内容\n ======================================= 普通に書くと file.log ============ 一行目の内容 二行目の内容 三行目の内容 ============ のような感じに。 \n≠0バイトなのでしょうか? 便乗質問ですが、よろしくお願いします。

mulala
質問者

補足

すいませんでした。 "勘違い"していました。 解決しました。 御世話様でした。

関連するQ&A

  • シェアポイント上にあるファイルを操作するには

    シェアポイントというものはよく知らないのですが シェアポイント上にあるファイルを バッチファイルでローカルにコピーしたり perlで操作したいのですが シェアポイント上にあるファイルは http://xxxx-xx.xx.~/test.htm というようにhttp://から始まるパスになっているため バッチファイルやperlからアクセスできないようなのですが シェアポイント上にあるファイル(test.htmなど)は バッチファイルやperlからどのように指定すれば よいのでしょうか。 ---test.bat-------------------------------------------------------------- copy "http://xxxx-xx.xx.~/test.htm" "c:\test\" --------------------------------------------------------------------------- では、 「'http:' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」 というエラーになります。 ----test.pl------------------------------------------------------------- my $file='http://xxxx-xx.xx.~/test.htm'; if (-e $file) { print "存在します"; } else { print "存在しません"; # <== 常にこちらになります } -------------------------------------------------------------------

  • ファイルの読み込み操作のコーディングについて

    perlのファイル読み込み操作についての質問です #!/usr/local/bin/perl #ファイルの読み込み open(FILE,"<diary.txt"); $data = <FILE>; close(FILE); #サーバー出力 print <<END; Content-type: text/html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html> <head> <title>ファイルの読み込み</title> </head> <body> <h5> <p>$data</p> </h5> </body> </html> END 次のように、perlのコードを書いて無料の CGIの使えるレンタルサーバーに 設置したところ、エラーが出てしまいます dairy.txtはこのファイルと同じディレクトリで パスも間違えてないです、いろいろ自分で調べてみたんですが どこが間違えているかわかりません よろしかったらどなたかperlに詳しい方がいらっしゃったら 間違えている箇所を教えていただけないでしょうか?

  • 空のファイル

    PERLでcgiを作っているんですが、 空のファイルはどうやったら作れますか? log1.dat log2.dat log3.dat といった空のファイルを作りたいのですが・・・。 よろしくお願いします。

    • ベストアンサー
    • CGI
  • バッチファイルで、キーボードより入力

    バッチファイルにより、複数のバッチファイルを切り替えて使いたいのですが、条件分岐IFで、分岐するために、キーボードより英数文字を入力し、それにより条件分岐する。プログラムを知りたいのですが、よろしくお願いします。

  • 0バイトのテキストファイル

    お世話になっております。 ファイルから特定の単語を抜き出し、新規でファイルを作成し、その中に単語を移行するスクリプトを作成しました。 しかし、単語のファイルが無い場合はエラーを出してくれるのですが、単語のファイルが空ファイル(0バイト)だった時、単語を移行する処理は行います。ですが、結果が空ファイルのままになります。 以下のスクリプトを作成したいのですが、勉強不足でうまくいきません。皆様のお知恵をお貸し下さい。 --------------------------------------------------------------- (1)単語のファイルがある事を確認。 (2)単語のファイルが空ファイルだった場合、移行する処理の中断およびエラー警告メッセージを表示。 (3)空ファイルじゃなかった場合、移行する処理を行う。 --------------------------------------------------------------- VBSを作成する場合、空ファイルが0バイトとして判断するのか、中身が白紙だった場合に判断するのか、という疑問もあって今回の質問をさせて頂きました。 どうか宜しく御願い致します。

  • ファイルの存在チェック

    毎度お世話になっております(・_・;A perl CGIで掲示板を作成しております。 一番初めに、書き込み用datファイルが存在するかをチェックしたいのですが、 どのように記述すれば良いのかわかりません。 もし[xxx.dat]が存在しなければ{     &error("xxx.datが存在しません"); } という感じにしたいのですが、どうやってファイルがあるのか調べれば良いのでしょうか。 宜しくお願い致します。

    • ベストアンサー
    • Perl
  • vistaでrarファイルを解凍すると、解凍する前に1ギガ近くあったファイルが

    解凍後のファイルでは、 ファイルの中身は空で、 0バイトです。 なんででしょうか? ちなみに解凍には+Lhaca を使っています。

  • フォートランでのファイル操作

    フォートランでファイルにアウトプットする際に、アウトプット先のディレクトリが存在しない場合、エラーで計算が止まってしまいますが、これを回避し、自動的にディレクトリを作成するようなことはできないでしょうか。 宜しくお願いします。

  • 特定ファイルをのぞいてすべて削除するBATの作成

    フォルダ内に存在するファイルを削除するBATを作りたいと思っています。条件定義は以下のような感じです。 1:消したくないファイルの拡張子だけ判明している(仮にTXT) 2:その他はすべて削除対処とする(いろいろなファイルが存在) 3:フォルダも存在していれば消す。(サブフォルダもある可能性がある) どう書いていいかでつまづいています。コマンド判定とか分岐処理をうまく使えば出来る気もするのですが・・。 よかったら教えてください<(_ _)>

  • ファイルが存在するか知りたい

    テーブルにファイル名のデータがあって 条件のあったファイル名を削除したいと考えているのですが kill ファイル名 で削除は出来るのですが そのファイルが存在しないとエラーが出てしまうので 削除する前にそのファイルが存在するのかを確認したいのですが ファイルの存在が確認できる関数か方法はないでしょうか 教えてください 宜しくお願いします 環境はaccess2000、win98です

専門家に質問してみよう