'

Perl и Unicode

Понравилась презентация – покажи это...





Слайд 0

Perl и Unicode Олег Алистратов Perl Mova – 2010


Слайд 1

Зачем нужен Unicode?


Слайд 2

Unicode в .ru 100 000 случайных сайтов Top 350* сайтов * По данным GoalEurope / Rating of Russian Web 2.0 Companies 2008


Слайд 3

История


Слайд 4

Трафик: text/plain Увеличение размера кириллического текста на 79%


Слайд 5

Трафик: text/html Увеличение размера HTML с русским текстом на 14% Медианный размер 100 тыс. случайно выбранных русскоязычных страниц


Слайд 6

Трафик: gzipped


Слайд 7

Производительность: платформы Mobile Intel® Celeron® 560 @ 2.13 GHz, RAM 1 Gb Microsoft® Windows® XP SP3 ActiveState Perl v5.10.0 Intel® Core™2 Duo E7400 @ 2.80 GHz, RAM 2 Gb Ubuntu 9.10 Karmic Koala linux 2.6.31-14-server perl v5.10.0 Intel® Xeon® E5450 @ 3.00 GHz ? 2, RAM 32 Gb FreeBSD® 6.2-RELEASE-p3 perl v5.8.8


Слайд 8

Строковые функции


Слайд 9

Регулярные выражения


Слайд 10

Регулярные выражения use re 'debug'; $a =~ /\d/; DIGIT $a =~ /[0-9]/; ANYOF[0-9] $a =~ /(?:0|1|2|3|4|5|6|7|8|9)/; TRIEC-EXACT[0-9]


Слайд 11

Исходный файл в UTF-8 { use utf8; my $a = 'Привет!'; print length($a), "\n"; } > 7 { no utf8; my $a = 'Привет!'; print length($a), "\n"; } > 13


Слайд 12

Символы и байты use utf8; # or use encoding "cp1251"; my $a = 'Привет!'; print length($a), "\n"; use bytes; print length($a), "\n"; > 7 > 13 use encoding::warnings 'FATAL';


Слайд 13

Исключения chdir, chmod, chown, chroot, exec, link, lstat, mkdir, rename, rmdir, stat, symlink, truncate, unlink, utime, -X %ENV glob (<*>) open, opendir, sysopen qx/…/, system readdir, readlink


Слайд 14

Encode use utf8; use Encode; my $x = 'a > b'; $x = Encode::encode( 'windows-1251', $x, Encode::FB_HTMLCREF ); print $x, "\n"; > a &#8594; b


Слайд 15

Символы my $copy = "\x00a9"; my $copy = "\x{00a9}"; my $copy = pack('U', 0x00a9); print $copy; > ©


Слайд 16

Регулярные выражения my $copy = '©'; $copy =~ /\x{00a9}/; $copy !~ /\p{Uppercase}/; $copy =~ /\p{Other_Symbol}/; $copy =~ /\p{InLatin-1_Supplement}/; $copy !~ /\p{InCyrillic}/; $copy !~ /\p{BidiClass:R}/;


Слайд 17

IO open(my $fh, "<:utf8", "file.txt"); open(my $fh, "<:encoding(UTF-8)", "file.txt"); open(my $fh, "<:encoding(cp1251)", "file.txt"); binmode(STDOUT, ":utf8"); RTFM Encode::Supported


Слайд 18

LWP use LWP::UserAgent; my $ua = LWP::UserAgent->new; my $response = $ua->get("http://example.com"); if ($response->is_success) { my $content = $response->decoded_content; if (defined($content)) { # ... } }


Слайд 19

Базы данных MySQL $dbh->do('SET NAMES utf8'); $dbh->{mysql_enable_utf8} = 1; PostgreSQL $dbh->do("SET client_encoding TO 'UTF8'"); $dbh->{pg_enable_utf8} = 1; SQLite $dbh->{sqlite_unicode} = 1;


Слайд 20

Конвертация БД $ mysqldump db_name > dump.sql $ iconv -f cp1251 -t utf-8 dump.sql > newdump.sql $ sed -i .bak "s/cp1251/utf8/" newdump.sql $ mysql < newdump.sql


Слайд 21

perl 5.12 Расширена поддержка классов и свойста символов до стандарта Unicode 5.2.0 use charnames ':full'; print "\N{GREEK SMALL LETTER ALPHA}"


Слайд 22

Спасибо! Олег Алистратов http://alienator.ya.ru http://clubs.ya.ru/regexp/


×

HTML:





Ссылка: