LINUX.ORG.RU

Perl 5.16

 ,


1

1

Вечером 20 мая, спустя год после публикации версии 5.14, состоялся релиз Perl версии 5.16.
Из изменений можно отметить следующие:

  • Поддерживаемая версия unicode обновлена до 6.1.
  • use VERSION теперь переводит интерпретатор в режим указанной версии. Например, указав use v5.14 в версии 5.16 мы получим поведение perl 5.14, а все features из других версий будут отключены.
  • Новое ключевое слово __SUB__, с помощью которого можно получить ссылку на текущую подпрограмму в области видимости самой подпрограммы. Теперь написание однострочников стало еще проще:
    # вычислим факториал 10 в одну строку
    my $fact = sub { $_[0]>0 ? $_[0] * __SUB__->($_[0]-1) : 1 }->(10)
    
  • Новая функция fc, производящая unicode casefolding над переданной строкой. Если ранее для сравнения не ASCII строк в разном регистре вы применяли lc() или uc(), то вы делали это неверно. Например слово «Reichwaldstraße» в верхнем регистре записывается, как REICHWALDSTRASSE. Что после перевода в нижний регистр обоих вариантов приведет к сравнению «reichwaldstraße» и «reichwaldstrasse». В итоге сравнение закончится неудачей. Именно эту проблему решает функция fc().

>>> Подробности

★★★

Проверено: tazhate ()
Последнее исправление: Silent (всего исправлений: 2)

Ответ на: комментарий от chg

про лигатуры что-нибудь слышал? В арабском, судя по всему, вообще ад кромешный.

Имхо ад не ад, а вызов uc(lc(string)) для строки в нижнем регистре не должен менять строку. И наоорот, для строки в верхнем регистре вызов пары lc/uc тоже не должен приводить к изменениям в строке.

AVL2 ★★★★★
()
Ответ на: комментарий от AVL2

твердого знака в верхнем регистре официально вроде как не существует

При этом несколькими сообщениями ранее ты сам сказал: «Твердый знак тоже только прописной». Увлекаешься взаимоисключающими параграфами или прописные буквы от строчных не отличаешь?

anonymous
()
Ответ на: комментарий от Nebuchadnezzar

Хорошо, и на каком языке их надо написать, чтобы они были понятны широкому кругу?

Если это питон, то тогда это вариант «оба плохо», потому как большая часть широкого круга как ни понимала эти закорючки, так и не поймет. Зато очень расстроятся те гуру, которым придется учить язык с противоестественной их природе семантикой. По крайней мере у меня от питоновского кода глаза на лоб лезут, и счастья от необходимости его изучать я не испытаю.

shaplov ★★★
()
Ответ на: комментарий от outtaspace

Есть большое количество методической литературы для начинающих, и для тех кто принимает проекты на этом языке.

Пруфлинк!

Boboms ★★
()
Ответ на: комментарий от bbk123

Нет, не работает. Но и по будням не особо напрягается. М/у скайпом и Вконтактом... :)))

Boboms ★★
()
Ответ на: комментарий от anonymous

При этом несколькими сообщениями ранее ты сам сказал: «Твердый знак тоже только прописной». Увлекаешься взаимоисключающими параграфами или прописные буквы от строчных не отличаешь?

Постоянно путаю, поэтому и стараюсь не использовать термины строчный и прописной. Понять их этимологию невозможно.

Твердый знак не встречается в начале слова, поэтому в большой букве нет необходимости. Но мы же не немцы. Надо, значит есть. А тоже ведь раньше так и норовили то поменять твердый знак на мягкий, то буквы ё и й не признавать за буквы, но реформы провели и нормально, а эти немцы...

AVL2 ★★★★★
()
Ответ на: комментарий от AVL2

Заглавный твердый знак существует точно так же, как в польском - заглавные Ą и Ę - его какбе нет, но он используется, если слово целиком набрано заглавными буквами

marvin_yorke ★★★
()
Ответ на: комментарий от Nebuchadnezzar

Замечу, что я не говорил будто Перл плохой язык. Я сказал, что он не годится в качестве стандартного языка для написания системных скриптов. Потому что скрипты от которых зависит работа системы должны быть понятны любому пользователю, обладающему минимальными навыками программирования, а не узкому кругу гуру.

Поверхностно зная C/C++ и имея некий опыт кнопкокляцания на PHP, я без проблем разобрался в божественном синтаксисе Perl. Есть, конечно, не сразу понятные конструкции, но пять минут чтения документации решают практически все вопросы.

Тот же руби для меня менее понятен и очевиден, чем перл. Я начальнику так и сказал, что это неудобоваримое <censored> учить не буду.

VeroLom ★★
()
Ответ на: комментарий от Nebuchadnezzar

А с каких это пор Perl стал китайской грамотой?

alex-w ★★★★★
()
Ответ на: комментарий от Boboms

Книга «Perl Best Practices » от Damian Conway.

Ну и большое количество «Standards and Styles for Developing Maintainable Code», разбросанных по интернетам. Посмотрите на perl_style_guide которые публикуются работодателями. Посмотрите слайды с конференций перловиков, на этих мероприятиях часто поднимается вопрос качества кода.

outtaspace ★★★
()
Ответ на: комментарий от AVL2

это в немецком языке буквы при смене регистра меняют или это бага в функции uc()?

Буква «ß» существует только в нижнем регистре, её аналог в верхнем именно «SS».

Casus ★★★★★
()
Ответ на: комментарий от Nebuchadnezzar

скрипты от которых зависит работа системы должны быть понятны любому пользователю

Вообще-то, системными делами занимаются должны «специально обученные люди» == сисадмины, средний по больнице пользователь знать про скрипты ничего не должен вообще. Если пользователь что-то знает про скрипты, то он уже не «любой». Вобщем, вся фраза бредовая.

Casus ★★★★★
()
Ответ на: комментарий от AVL2

а эти немцы...

Попахивает нацполом. Я слежу за тобой...

Casus ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.