• ベストアンサー

表の色を交互に変更

以下の<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);

質問者が選んだベストアンサー

  • ベストアンサー
  • uchac
  • ベストアンサー率100% (2/2)
回答No.2

こんなのはどうでしょう。 #ffffff , #eeeeee が相互に入れ替わります。 while(<IN>) { ... $color = ($color eq '#ffffff') ? '#eeeeee' : '#ffffff'; print "<tr bgcolor=$color>\n"; ... }

MKNET
質問者

お礼

有難うございます。大変わかりやすい書き方で参考になりました。

その他の回答 (2)

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.3

こういうやり方もあるということで。 #!/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 の閉じタグないけどいいの?

MKNET
質問者

お礼

参考になる書き方を有難うございます。trの閉じ忘れも、正常に表示していたために気づきませんでした。指摘していただいて大変助かりました。

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

カウンタ変数$linoを導入し、whileループを1周するごとに+1して、 そいつが偶数なら、bgcolorとして#eeeを出力するようにすればよいのでは。 偶数かどうかは、$lino % 2 が0かどうかで判定できます。 具体的なコードは省略。

MKNET
質問者

お礼

$count = $count + 1; $count2 = $count % 2; 検索していたところ教えていただいた内容のソースが見つかりました。有難うございました。

関連するQ&A