my $hexString = "#00FF00"; my $darkHexString = '#'; while ($hexString =~ m/([0-9a-f]{2})/ig) { use utf8; $darkHexString .= sprintf "%02lx", int(hex($1)/2); } print "$darkHexString\n";