- ベストアンサー
表の色を交互に変更
以下の<tr bgcolor=\"#ffffff\">の部分を<tr bgcolor=\"#eeeeee\">と交互に表示させたいのですが、方法がわかりません。よろしくお願いいたします。 open(IN,"$file") || &error("file"); while (<IN>) { ($now,$host) = split(/<>/); print "<tr bgcolor=\"#ffffff\">\n"; print "<td>$now</td>\n"; print "<td>$host</td>\n"; } close(IN);
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんなのはどうでしょう。 #ffffff , #eeeeee が相互に入れ替わります。 while(<IN>) { ... $color = ($color eq '#ffffff') ? '#eeeeee' : '#ffffff'; print "<tr bgcolor=$color>\n"; ... }
その他の回答 (2)
- sakusaker7
- ベストアンサー率62% (800/1280)
こういうやり方もあるということで。 #!/usr/bin/perl use strict; use warnings; my $color = 0xffffff; my $mask = $color ^ 0xeeeeee; while (<DATA>) { my ($now, $host) = split; printf <<EOM , $color; <tr bgcolor="#%06x"> <td>$now</td> <td>$host</td> EOM $color ^= $mask; } __END__ 0130 hogehoge 0200 fugafuga 2230 moge 1500 helloworld 1700 greatquux 1800 goigoi 0915 gachapen 実行例: <tr bgcolor="#ffffff"> <td>0130</td> <td>hogehoge</td> <tr bgcolor="#eeeeee"> <td>0200</td> <td>fugafuga</td> <tr bgcolor="#ffffff"> <td>2230</td> <td>moge</td> <tr bgcolor="#eeeeee"> <td>1500</td> <td>helloworld</td> <tr bgcolor="#ffffff"> <td>1700</td> <td>greatquux</td> <tr bgcolor="#eeeeee"> <td>1800</td> <td>goigoi</td> <tr bgcolor="#ffffff"> <td>0915</td> <td>gachapen</td> って、tr の閉じタグないけどいいの?
お礼
参考になる書き方を有難うございます。trの閉じ忘れも、正常に表示していたために気づきませんでした。指摘していただいて大変助かりました。
- osamuy
- ベストアンサー率42% (1231/2878)
カウンタ変数$linoを導入し、whileループを1周するごとに+1して、 そいつが偶数なら、bgcolorとして#eeeを出力するようにすればよいのでは。 偶数かどうかは、$lino % 2 が0かどうかで判定できます。 具体的なコードは省略。
お礼
$count = $count + 1; $count2 = $count % 2; 検索していたところ教えていただいた内容のソースが見つかりました。有難うございました。
お礼
有難うございます。大変わかりやすい書き方で参考になりました。