sub ip2rgb { my $ip = shift; my $bright = shift; my @octets = split /\./, $ip; my $mso = shift @octets; my @rgb = map { $_ >> 1 } @octets; my $msb = ($mso >> 6 & 0x03) ^ ($mso >> 4 & 0x03) ^ ($mso >> 2 & 0x03) ^ ($mso >> 2 & 0x03) ^ ($mso & 0x03); if ($msb != 3) { $rgb[$msb] |= 0x80; } if ($bright) { for (@rgb) { $_ ^= 0x80; } } return @rgb; }