I don't think there is any bug, and in fact your code is very suspicious. It does not seem to me that you have utf8 flag turned on for your files. The mention of your attempt to open file with binmode, simply does not fit in the context at all. Why binmode has anything to do with what you are attempting?

Hope those little sample code help you understand how Perl handles unicode file IO. The first example works as expected:

use strict; use warnings; open(FILE, ">:utf8", "a.txt"); print FILE "a\x{2322}bcd\n"; close FILE; open(FILE, "<:utf8", "a.txt"); while (my $line = <FILE>) { print substr($line, 0, 3); } close FILE;

This second example does not work, and it should not work: (The only difference here is that files are opened without :utf8)

use strict; use warnings; open(FILE, ">", "a.txt"); print FILE "a\x{2322}bcd\n"; close FILE; open(FILE, "<", "a.txt"); while (my $line = <FILE>) { print substr($line, 0, 3); } close FILE;

In reply to Re: substr on utf8-strings by pg
in thread substr on utf8-strings by Anonymous Monk

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.