Perlサブルーチンbyとまて |
file_IO_test.cgi |
#!/usr/local/bin/perl # ************** file_IO_test.cgi ************* $me="file_IO_test.cgi"; # 使用する配列はサブルーチンをコールする前に作成しておく @data=(); # ファイル入力サブルーチンをコールする # testinput.txtの内容を@dataに入力する。 $errinp=&fileinput("testinput.txt","data"); # ファイル出力サブルーチンをコールする # @dataの内容全てをout1.txtに上書き出力する $errout1=&fileout("out1.txt","data",1); # ファイル出力サブルーチンをコールする # $data[2]〜$data[5]をout2.txtに追加出力する $errout2=&fileout("out2.txt","data",0,2,5); #================================================================= # 画面へのテスト出力 print "Content-type: text/html\n\n"; print <<"HIA1"; <HTML> <META HTTP-EQUIV="content-type" CONTENT="text/html;charset=SHIFT_JIS" > <HEAD> <TITLE>テスト用</TITLE> </HEAD> <BODY> ファイル入力成否=$errinp<BR> @data<BR> ファイル出力成否1=$errout1<BR> ファイル入力成否2=$errout2<BR> </BODY> </HTML> HIA1 #***************************************************************** #================================================================= # ファイル入力サブルーチン__ &fileinput(入力ファイル名,変数名) #  ※サブルーチンを呼ぶ前に、@変数名=();など、配列をあらかじめ作っておく必要があります。 sub fileinput{ $err=0; $filename=$_[0]; $hensuumei=$_[1];         if ( !open (FILE_IO, $filename) ){             $err=1;     }     else{         @$hensuumei = <FILE_IO>;         close(FILE_IO);     }         $cntend=@$hensuumei-1;     for ($i=0;$i<=$cntend;$i++){        $$hensuumei[$i]=~s/\r//g;        $$hensuumei[$i]=~s/\n//g;     }     return($err); } #==================================================================== # ファイル出力サブルーチン__ &fileout(出力ファイル名,変数名,書き込みモード,start,end) #    ※書き込みモードは、0:追加書き込み、1:上書き保存 sub fileout{     $err=0;     $filename=$_[0];     $hensuumei=$_[1];     $overwrite=$_[2];     $istart=$_[3];     $iend=$_[4];     $cntend=@$hensuumei-1;          if($istart eq "" && $iend eq ""){         $istart=0;         $iend=$cntend;     }     if($istart<0 || $istart>$iend || $iend>$cntend){         $err=1;     }else{         if($overwrite==1){             $openname=">".$filename;         }else{             $openname=">>".$filename;         }         # ファイルに格納する。         if ( !open (FILE_IO, $openname) ){             $err=1;         }else{            for ($i=$istart;$i<=$iend;$i++){               print FILE_IO $$hensuumei[$i]."\n";            }            close (FILE_IO);         }     }     return($err); } |