Как мне найти длину строки Unicode в Perl?

perldoc страница длядлина () говорит мне, что я должен использоватьbytes::length(EXPR) найти строку Unicode в байтах, или ибайтов Страница повторяет это.

use bytes;
$ascii = 'Lorem ipsum dolor sit amet';
$unicode = 'Lørëm ípsüm dölör sît åmét';

print "ASCII: " . length($ascii) . "\n";
print "ASCII bytes: " . bytes::length($ascii) . "\n";
print "Unicode: " . length($unicode) . "\n";
print "Unicode bytes: " . bytes::length($unicode) . "\n";

Вывод этого скрипта, однако, не согласуется с man-страницей:

ASCII: 26
ASCII bytes: 26
Unicode: 35
Unicode bytes: 35

Мне кажется, что length () и bytes :: length () возвращают одно и то же для ASCII и Строки Unicode. Мой редактор по умолчанию настроен на запись файлов в формате UTF-8, поэтому я считаю, что Perl интерпретирует весь сценарий как Unicode -Означает ли это, что length () автоматически обрабатывает строки Unicode правильно?

Редактировать: Смотрите мой комментарий; мой вопрос нене имеет большого смысла, потому что length ()не за работой "должным образом" в приведенном выше примере - он показывает длину строки Unicode в байтах, а не в символах. Резонанс, который я наткнулся на это, касается программы, в которой мне нужно установить заголовок Content-Lenth (в байтах) в HTTP-сообщении. Я читал об Unicode в Perl и ожидал, что мне придется что-то придумать, чтобы все заработало, но когда length () вернул именно то, что мне было нужно, я был в замешательстве! Смотрите принятый ответ для обзора,use utf8use bytes, а такжеno bytes в перл.

Ответы на вопрос(3)

Ваш ответ на вопрос