中井技術工房 CGI アプローチ トップ > CGIアプローチ > ここ

ファイル入出力機能
perl ファイルの読書き例

●ファイルの読出し

[ テキストファイル ]

1行だけ読み出す CGI 例です。


     #!/usr/bin/perl
          # 本宣言の Dir はサーバーによって異なる

     print "Content-type:text/html\n\n";  # この宣言はサーバーによっては不要

     # カウンタファイルからカウンタ数字を取り出す
     $cfname = "CounterD.cgi";
     open(FP,"<$cfname");
       $count = <FP>;
     close(FP);

[ バイナリファイル ]

画像ファイルなどをバイナリで読み出すには次のようにします。


     #!/usr/bin/perl

     print "Content-type:text/html\n\n";
     
     open(FP, $gifname);
       read(FP, $gdat, 10000);   # バイナリで読み出す、バイト数は大きな数字を入れておく
     close(FP);

●ファイルの書出し

[ テキストファイル ]

数行書き出す CGI 例です。後で紹介するアクセスカウンタから切り出したのでちょっとバタくさいソースですが。
書込みの場合は、更新('>')か追記('>>')かを明示する必要があります。


     #!/usr/bin/perl

     print "Content-type:text/html\n\n"; 
  
     # 以下に現れる $???? の変数はこの位置で宣言されていること。
     # ここではサンプルなので
     $ketasr=?;                   
     $cfname = "CounterD.cgi";  # Dir によっては "/xxxx/xxxx.xxx" とか "../xxx/xxx.xx" とかに変わる
     $ketadummy=2;
   
     if($ketasr==0) {    
        open(FP,">$fname");    # 先頭は書替モード(いったん空にするという意味)
     }else {
        open(FP,">>$fname");   # 以後は追加モード
     }
 
     $outstr=sprintf("桁 %d ダミー桁 %d",$ketasr,$ketadummy);
     print FP $outstr;      # 桁指定値を出力
     print FP "\n";         # CR

     $outstr=sprintf("数 [%d]",$su);
     print FP $outstr;      # カウンタの指定桁該当数字出力
     print FP "\n";         # CR
     print FP "メール送信内容 ";
     print FP $mailrslt;    # メール送信結果の出力
     print FP "\n";         # CR
     close(FP);

[ バイナリファイル ]

CGI でバイナリファイルを書き出すというのは考えにくいのでパスします。


トップ > CGIアプローチ トップ > 頁トップ