#!/usr/bin/perl $shift = rand(360); print << "_END_"; Content-type:text/html リロードすると色変わります _END_ for($i = 0; $i < 360; $i+=120){ print "\n"; for($j = $i; $j < $i+120; $j+=40){ my $color = hsv2str($shift + $j, 0.4, 0.5); my $bg_color = hsv2str($shift + $j+200, 0.3, 1); print << "_END_"; _END_ } print "\n"; } print << "_END_";
$j
$color
$bg_color


_END_ for($i = 0; $i < 360; $i+=120){ print "\n"; for($j = $i; $j < $i+120; $j+=40){ my $color = hsv2str($shift + $j, 0.8, 0.5); print << "_END_"; _END_ } print "\n"; } print << "_END_";
$j
$color
_END_ sub myLimit { my($v, $l, $u) = @_; return $l if ($v < $l); return $u if ($v > $u); return $v; } sub myLimitRotate { my($v, $r) = @_; $v += $r while($v < 0); $v -= $r while($v >= $r); return $v; } sub hsv2str{ my($h, $s, $v) = @_; my($r, $g, $b); $s = myLimit($s, 0, 1); $v = myLimit($v, 0, 1); $h = myLimitRotate($h, 360) / 60; $hi = int($h); $hf = $h - $hi; my $p1 = $v * (1 - $s); my $p2 = $v * (1 - $s * $hf); my $p3 = $v * (1 - (1 - $hf) * $s); if($hi == 0) { $r = $v; $g = $p3; $b = $p1; } elsif($hi == 1) { $r = $p2; $g = $v; $b = $p1; } elsif($hi == 2) { $r = $p1; $g = $v; $b = $p3; } elsif($hi == 3) { $r = $p1; $g = $p2; $b = $v; } elsif($hi == 4) { $r = $p3; $g = $p1; $b = $v; } elsif($hi == 5) { $r = $v; $g = $p1; $b = $p2; } return sprintf('#%02X%02X%02X', $r*0xff, $g*0xff, $b*0xff); }