ここではPerl 5.6以降のUnicodeサポートで内部的に使用されているデータ構造、swatchとswashについて概説します。 swatch/swashを必要とする処理は、正規表現では文字プロパティ (\p{ }, \P{ }) 、Unicodeに対する場合の \w や \W, 文字クラス等があり、それ以外には文字間の写像 (tr///, y///, uc, lc, ucfirst, lcfirst, \U, \L, \u, \l) があります。 swatchとは、平たく言えば、断片的なbit vectorです。例えばm個の連続した符号位置(code point)について、一符号位置当たりnビットの値を格納する場合、(m×n/8)バイト長の文字列に格納します。なお、perl内部では1バイト=8ビットは前提ですので、byteの定義についての議論は無用です。また、swashとは、swat