アプリ版:「スタンプのみでお礼する」機能のリリースについて

現在、CGIからCSVファイルを読み込んでHTMLの表を生成しようと思っています。

1行に1件ずつforeachを使って表示することは出来ました。
ですが、1行に3件ずつ表示してから、次の行に移るといった処理の仕方がわかりません。
ですので処理の仕方を教えてもらえないでしょうか?
よろしくお願いします。

A 回答 (2件)

foreachは使いませんが・・・


これではどうでしょう

#!/usr/local/bin/perl

use strict;
use CGI::Carp qw(fatalsToBrowser);
use CGI;

#表示用設定
my $query = new CGI;
print $query->header(-charset=>'Shift_JIS');

#データ読み込み
open(IN,'./test.csv');
my @csv=grep(chomp,<IN>);
close(IN);

#全部表に
print '<table border="1">';
for my $row(0..$#csv){
print '<tr>';
my @csv1=split(/,/,$csv[$row]);
for my $col(0..$#csv1){
print '<td>'.$csv1[$col].'</td>';
}
print '</tr>';
}
print '</table>';

#1,3,6番目の要素を表に
print '<table border="1">';
for my $row(0..$#csv){
print '<tr>';
my @csv1=split(/,/,$csv[$row]);
print '<td>'.$csv1[0].'</td>';
print '<td>'.$csv1[2].'</td>';
print '<td>'.$csv1[5].'</td>';
print '</tr>';
}
print '</table>';
    • good
    • 0

泥臭いやり方ですが…



$col = 10; #列数
print qq(<TABLE BORDER="1">\n);
$i = 0;
foreach $csvdata (@csvdata) {
if (!$i) { print qq(<TR>\n);}
print qq(<TD>$csvdata</TD>\n);
$i++;
if ($i == $col) { print qq(</TR>\n);$i = 0;}
}
if ($i != $col) { print qq(</TR>\n);}
print qq(</TABLE>\n);
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!