CGI-BBS > CGI > Perl > Perlについて同じ構文を簡単できない。


カレッヂ
カレッヂ


質問者 AKI  投稿日 2005/3/30(水) 12:43:22
こんにちは
今、CGIをPERLで作ってますが
プログラム中に同じ構文がたくさん出てくるので簡単にできませんか?

print "<caption>★ああああ</caption>"; 

print "<table border=1 cellspacing=1 >\n"; 

print "<tr>\n"; 

my $linemax=$yoko-1; 
my $count=0; 
   for(@DATA){ 
       chomp; 
       ($no,$name,$banar,$se,$jan)=split /<>/; 
       if($count > $linemax){print"</tr>";$count=0;} 

if ($jan eq '0'){ 

print "<td width='140'><a href=http://$name target='_blank'><center><img src=http://$banar height='100' width='60' Border='0' ALT=$se ></a></td></center>\n";
       $count++; 
} 
} 
print "</table>\n"; 
print "<caption>★いいいいいい</caption>";
print "<table border=1 cellspacing=1 >\n"; 
 
print "<tr>\n"; 

my $linemax=$yoko-1; 
my $count=0; 
   for(@DATA){ 
       chomp; 
       ($no,$name,$banar,$se,$jan)=split /<>/; 
       if($count > $linemax){print"</tr>";$count=0;} 
if ($jan eq '1'){ 

print "<td width='140'><a href=http://$name target='_blank'><center><img src=http://$banar height='100' width='60' Border='0' ALT=$se ></a></td></center>\n";
       $count++; 
} 
} 


上の式で

my $linemax=$yoko-1; 
my $count=0; 
   for(@DATA){ 
       chomp; 
       ($no,$name,$banar,$se,$jan)=split /<>/; 
       if($count > $linemax){print"</tr>";$count=0;} 

と
"<td width='140'><a href=http://$name target='_blank'><center><img src=http://$banar height='100' width='60' Border='0' ALT=$se ></a></td></center>\n";
       $count++; 
が同じなのですが何か変数みたいに使いまわしできませんか?

【習熟度】多少の改造ができる

回答者 sim  [削除]  投稿日 2005/4/3(日) 05:48:38
こんなのはどうでしょう?

print "<caption>★ああああ</caption>"; 
print "<table border=1 cellspacing=1 >\n"; 
print "<tr>\n"; 

&WriteTD(0,$yoko-1);

print "</table>\n"; 
print "<caption>★いいいいいい</caption>";
print "<table border=1 cellspacing=1 >\n"; 
print "<tr>\n";

&WriteTD(1,$yoko-1);

sub WriteTD{
  my($jan_num,$yoko,$linemax,$count,@DATA);

  ($jan_num,$linemax) = @_;
  $count = 0;

  foreach(@DATA){ 
    chomp; 
    my($no,$name,$banar,$se,$jan)=split /<>/; 
    if($count > $linemax){print"</tr>";$count=0;} 
    if ($jan eq $jan_num){ 
      print "<td width='140'><a href=http://$name target='_blank'><center><img src=http://$banar height='100' width='60' Border='0' ALT=$se ></a></td></center>\n";
       $count++; 
    }
  } 
}
質問者 AKI  [削除]  投稿日 2005/4/4(月) 12:36:21
表示しませんでした。
なぜでしょう?
回答者 sim  [削除]  投稿日 2005/4/4(月) 14:36:38
@DATAも渡してあげればいいかも?
質問者 AKI  [削除]  投稿日 2005/4/4(月) 19:49:59
DATAを追加したらできました
ありがとうございます

このページは終了したので返信(回答)は書きこめません
 


Web裏技