<?xml version="1.0" encoding="windows-1252"?>
<node id="871200" title="Re^3: Unicode: Perl5 equivalent to Perl6's @string.graphemes?" created="2010-11-12 23:05:54" updated="2010-11-12 23:05:54">
<type id="11">
note</type>
<author id="546548">
Jim</author>
<data>
<field name="doctext">
&lt;p&gt;Contents of a Unicode (UTF-8) text file named DriedMangos.txt:&lt;/p&gt;

&lt;table&gt;
&lt;tr&gt;&lt;td width="30"&gt;&lt;/td&gt;&lt;td&gt;dried mangos&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td width="30"&gt;&lt;/td&gt;&lt;td&gt;mangues se&amp;#769;che&amp;#769;es&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td width="30"&gt;&lt;/td&gt;&lt;td&gt;&amp;#33426;&amp;#26524;&amp;#24185;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td width="30"&gt;&lt;/td&gt;&lt;td&gt;doraido mango&amp;#772;su&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td width="30"&gt;&lt;/td&gt;&lt;td&gt;&amp;#12489;&amp;#12521;&amp;#12452;&amp;#12489;&amp;#12510;&amp;#12531;&amp;#12468;&amp;#12473;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td width="30"&gt;&lt;/td&gt;&lt;td&gt;&amp;#12488;&amp;#12441;&amp;#12521;&amp;#12452;&amp;#12488;&amp;#12441;&amp;#12510;&amp;#12531;&amp;#12467;&amp;#12441;&amp;#12473;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td width="30"&gt;&lt;/td&gt;&lt;td&gt;&amp;#12488;"&amp;#12521;&amp;#12452;&amp;#12488;"&amp;#12510;&amp;#12531;&amp;#12467;"&amp;#12473;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;p&gt;Perl script to demonstrate matching Unicode [href://http://unicode.org/glossary/#grapheme_cluster|grapheme clusters] using the regular expression backslash sequence [doc://perlrebackslash#Misc|\X]:&lt;/p&gt;

&lt;code&gt;
#!perl

use strict;
use warnings;
use autodie;

open my $input_fh,  '&lt;:encoding(UTF-8)', 'DriedMangos.txt';
open my $output_fh, '&gt;:encoding(UTF-8)', 'Graphemes.txt';

while (my $line = &lt;$input_fh&gt;) {
    chomp $line;

    while ($line =~ m/(\X)/g) {
        print $output_fh "[$1]";
    }

    print $output_fh "\n";
}

close $input_fh;
close $output_fh;
&lt;/code&gt;

&lt;p&gt;Contents of the output text file named Graphemes.txt:&lt;/p&gt;

&lt;table&gt;
&lt;tr&gt;&lt;td width="30"&gt;&lt;/td&gt;&lt;td&gt;&amp;#91;d&amp;#93;&amp;#91;r&amp;#93;&amp;#91;i&amp;#93;&amp;#91;e&amp;#93;&amp;#91;d&amp;#93;&amp;#91; &amp;#93;&amp;#91;m&amp;#93;&amp;#91;a&amp;#93;&amp;#91;n&amp;#93;&amp;#91;g&amp;#93;&amp;#91;o&amp;#93;&amp;#91;s&amp;#93;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td width="30"&gt;&lt;/td&gt;&lt;td&gt;&amp;#91;m&amp;#93;&amp;#91;a&amp;#93;&amp;#91;n&amp;#93;&amp;#91;g&amp;#93;&amp;#91;u&amp;#93;&amp;#91;e&amp;#93;&amp;#91;s&amp;#93;&amp;#91; &amp;#93;&amp;#91;s&amp;#93;&amp;#91;e&amp;#769;&amp;#93;&amp;#91;c&amp;#93;&amp;#91;h&amp;#93;&amp;#91;e&amp;#769;&amp;#93;&amp;#91;e&amp;#93;&amp;#91;s&amp;#93;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td width="30"&gt;&lt;/td&gt;&lt;td&gt;&amp;#91;&amp;#33426;&amp;#93;&amp;#91;&amp;#26524;&amp;#93;&amp;#91;&amp;#24185;&amp;#93;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td width="30"&gt;&lt;/td&gt;&lt;td&gt;&amp;#91;d&amp;#93;&amp;#91;o&amp;#93;&amp;#91;r&amp;#93;&amp;#91;a&amp;#93;&amp;#91;i&amp;#93;&amp;#91;d&amp;#93;&amp;#91;o&amp;#93;&amp;#91; &amp;#93;&amp;#91;m&amp;#93;&amp;#91;a&amp;#93;&amp;#91;n&amp;#93;&amp;#91;g&amp;#93;&amp;#91;o&amp;#772;&amp;#93;&amp;#91;s&amp;#93;&amp;#91;u&amp;#93;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td width="30"&gt;&lt;/td&gt;&lt;td&gt;&amp;#91;&amp;#12489;&amp;#93;&amp;#91;&amp;#12521;&amp;#93;&amp;#91;&amp;#12452;&amp;#93;&amp;#91;&amp;#12489;&amp;#93;&amp;#91;&amp;#12510;&amp;#93;&amp;#91;&amp;#12531;&amp;#93;&amp;#91;&amp;#12468;&amp;#93;&amp;#91;&amp;#12473;&amp;#93;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td width="30"&gt;&lt;/td&gt;&lt;td&gt;&amp;#91;&amp;#12488;&amp;#12441;&amp;#93;&amp;#91;&amp;#12521;&amp;#93;&amp;#91;&amp;#12452;&amp;#93;&amp;#91;&amp;#12488;&amp;#12441;&amp;#93;&amp;#91;&amp;#12510;&amp;#93;&amp;#91;&amp;#12531;&amp;#93;&amp;#91;&amp;#12467;&amp;#12441;&amp;#93;&amp;#91;&amp;#12473;&amp;#93;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td width="30"&gt;&lt;/td&gt;&lt;td&gt;&amp;#91;&amp;#12488;&amp;#93;&amp;#91;"&amp;#93;&amp;#91;&amp;#12521;&amp;#93;&amp;#91;&amp;#12452;&amp;#93;&amp;#91;&amp;#12488;&amp;#93;&amp;#91;"&amp;#93;&amp;#91;&amp;#12510;&amp;#93;&amp;#91;&amp;#12531;&amp;#93;&amp;#91;&amp;#12467;&amp;#93;&amp;#91;"&amp;#93;&amp;#91;&amp;#12473;&amp;#93;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;p&gt;(See [href://http://ameblo.jp/gucciman-ikkob/entry-10317490092.html] for an explanation of the peculiar last line of the file named DriedMangos.txt.)&lt;/p&gt;
</field>
<field name="root_node">
871088</field>
<field name="parent_node">
871173</field>
</data>
</node>
