Итак, это своего рода косметическая точка, но есть ли простой способ вставить символ юникода по его имени в строку Perl и дать имя «нормальному» регистру?
Perl включает литералы юникодакоторые ищут кодовые точки по имени, как показано ниже:
"\N{GREEK SMALL LETTER ALPHA}"
Мне кажется, что легче читать что-то вроде следующего:
"\N{Greek Small Letter Alpha}",
Насколько я знаю, ни одного случаяминимальные пары, когда дело доходит до имен символов юникода.Есть ли краткий способ назвать символ, который все еще вызывает compilation error
очень рано в процессе выполнения скрипта, если символ не существует?
пример ошибки компиляции с намеренно написанным с ошибкой именем символа, этовид проверки, от которого я не хочу отказываться.
$ echo '%[a]' | ./unicodify
Unknown charname 'GREK SMALL LETTER ALPHA' at ./unicodify line 10, within string
Execution of ./unicodify aborted due to compilation errors.
Я пытаюсь написать небольшую утилиту, чтобы упростить ввод символов юникода в текстовые файлы с помощью мнемонических имен, разделенных %[
и ]
.
Вот чрезвычайно урезанный пример, который просто заменяет %[a]
и %[b]
.
#! /usr/bin/env perl
use strict;
use warnings;
use utf8;
use open ':std' => ':utf8';
my %abbrevs = (
'a' => "\N{GREEK SMALL LETTER ALPHA}",
'b' => "\N{GREEK SMALL LETTER BETA}",
);
while (<>) {
chomp;
my $line = $_;
$line =~ s/(\%\[(.*?)\])/$abbrevs{$2}/g;
print "${line}\n";
}