Perlサブルーチンbyとまて |
table_tag_test.cgi |
#!/usr/local/bin/perl # ************** test.cgi ************* $me="table_tag_test.cgi"; #--------------------↓テーブルタグの作成------------------------- #------------------- # 1.CSV型のデータの場合のサブルーチンコール     $table1= "<TABLE BORDER=\"1\" CELLSPACING=\"0\" CELLPADDING=\"2\" BORDERCOLOR=\"green\" BGCOLOR=\"white\">\n";     @lines=("2000年,平成12年,辰年","2001年,平成13年,巳年","2002年,平成14年,午年","2003年,平成15年,未年");     $kugiri=",";     $lines_num=@lines;     for($k=0;$k<$lines_num;$k++){          # サブルーチンコール部分          $table1=$table1.&add_table(0,$kugiri,0,$lines[$k]);     }     # テーブルタグを閉じている。     $table1=$table1.'</TABLE>'; #------------------- # 2.データ列挙型のコールの場合     # 単純に列挙する     $table2= "<TABLE BORDER=\"1\" CELLSPACING=\"0\" CELLPADDING=\"2\" BORDERCOLOR=\"red\" BGCOLOR=\"white\">\n";     $table2=$table2.&add_table(1,4,"初夢","富士","鷹","なすび");     $table2=$table2.'</TABLE>';     # 一行分のデータを、配列 (この場合は、@data)に入れてからコールする     $table3= "<TABLE BORDER=\"1\" CELLSPACING=\"0\" CELLPADDING=\"2\" BORDERCOLOR=\"blue\" BGCOLOR=\"white\">\n";     @data=("巨人","大鵬","たまごやき");     $table3=$table3.&add_table(1,0,@data);     $table3=$table3.'</TABLE>'; #--------------------↓ページの表示---------------------- print "Content-type: text/html\n\n"; print <<"HIA1"; <HTML> <META HTTP-EQUIV="content-type" CONTENT="text/html;charset=SHIFT_JIS" > <HEAD> <TITLE>テーブルタグ</TITLE> <STYLE> </STYLE> </HEAD> <BODY BGCOLOR="#ffffdd"> <H1>テーブルタグ作成サブルーチンのテスト</H1> <HR> <H3>1.CSV型のデータの場合のサブルーチンコール</H3> $table1 <H3>2.データ列挙型のコールの場合(単純に列挙して引数渡し)</H3> $table2 <H3> (データを配列にしてから引数として渡す)</H3> $table3 <HR> </BODY> </HTML> HIA1 exit(); #--------------------↓ここから下はサブルーチン---------------------- #================================================================= # テーブルタグ発生サブルーチン__ &add_table(引数) # #  1.CSVタイプのデータの場合 #     (0,CSVの区切り文字選択,表のカラム[列]の数,データ) #     ※区切り文字は、0でカンマ,1でタブコード,2でスペース # #  2.変数名を並べて呼ぶ場合 #     (1,表のカラム[列]の数,変数1,変数2,変数3,変数4,…) #     ※カラム数が0の場合は、実際の変数の数をカラム数にする # sub add_table{ $mode = $_[0];     # 引数モードがCSVタイプの場合------------------------------------------------------     if($mode==0){         $switch=$_[1];         $cols_num = $_[2];         $data=$_[3];         # 区切り文字でカラムデータを分割する         if($switch==0){             @cols=split(/\,/,$data);         }elsif($switch==1){             @cols=split(/\t/,$data);         }elsif($switch==2){             #スペースの連続している部分を1つにする             while(-1 != index $data,"  "){                 $data=~ s/  / /g;             }             @cols=split(/\s/,$data);         }         # カラムの数が指定されていない場合はデータの数に合わせる         if($cols_num == 0){$cols_num=@cols;}     }     # 引数モードが変数を並べて呼ぶタイプの場合----------------------------------------     if($mode==1){         $cols_num = $_[1];         # カラム数が指定されて無い場合         if($cols_num==0){$cols_num=@_-2;}         # 各カラムのデータを挿入         for($i=0;$i<$cols_num;$i++){$cols[$i]=$_[$i+2];}     }     # データにタグを挿入する     $output1="<TR>";     for($i=0;$i<$cols_num;$i++){        $output1=$output1."<TD>".$cols[$i]."</TD>";     }     $output1=$output1."</TR>\n";     return($output1); }  __END__ |