Сегодня читал о Perl. Завтра напишу более качественный Perl-код.
Вчера я прочитал ответ Рэндала Л. Шварца « Perl 6 уже имеет все это » на Десять интересных функций из различных современных языков Каспера Пойлена.
Ага, подумал я: «Perl 6 все еще остается патологически эклектичной синтаксической ловушкой!»
А затем Сегодня, читая Лучшие практики Perl: стандарты и стили для разработки поддерживаемого кода Дэмиана Конвея, я наткнулся на раздел о регулярных выражениях Perl.
Я программировал регулярные выражения на основе того, что я уже знал, из Grep, проверяя документы perl и онлайн-примеры, чтобы понять синтаксис.
Я что-то упустил.
Например, пару месяцев назад мне нужно было сопоставить более 10 разновидностей дат авторского права. В этом беспорядке я хотел сопоставить группу фраз, которые могли бы находиться между словом [Cc] opyright и годом. Такие вещи, как «(c)» и «by». Но я не хотел, чтобы группа «захватывала» содержимое для последующей вставки в вывод.
Я закодировал проблему.
Я должен был заглянуть в документацию.
Пример кода:
(\([Cc]\)|[Bb]y)
Лучший пример кода - (?:
преобразует группу в группу без захвата!
(?:\([Cc]\)|[Bb]y)
Так что, возможно, весь этот дополнительный доступный синтаксис сработает на меня, а не против меня. И Завтра я напишу более качественный код на Perl.
Вот рабочий код, в котором используется модификатор «x», чтобы указать Perl игнорировать обычные пробелы в регулярном выражении. Да, я использовал s{}{}
вместо s///
:
use strict; use warnings; my $in = 'Copyright by bop 2018'; $in =~ s{ [Cc]opyright \s+ (?:\([Cc]\)|[Bb]y) \s+ bop \s+ (\d+) } {Copyright $1}x; print "\n$in\n\n";
Вот две книги о Perl, которые я купил в этом году. Ссылки на Amazon Canada - просто измените .ca на .com, .co.uk или что-то еще, и они, скорее всего, будут работать.
Лучшие практики Perl: стандарты и стили для разработки поддерживаемого кода
Конвей, Дамиан
Perl Medic: преобразование устаревшего кода
Скотт, Питер
Perl Best Practices состоит из множества частей, применимых к большинству языков программирования.
Например, каковы хорошие варианты согласованных имен переменных, функций, имен модулей во всей базе кода и зачем вам прилагать усилия?
Дамиан объясняет!
Perl Medic более специфичен для Perl, с множеством синтаксических плюсов и архитектурным золотом.
И да, я еще не закончил первое чтение ни того, ни другого. С нетерпением жду этого второго чтения и новых заметок!
Напишите в комментариях, какие книги по программированию вы читаете!
✉️ Подпишитесь на рассылку еженедельно Email Blast от CodeBurst 🐦 Подпишитесь на CodeBurst на Twitter , просмотрите 🗺️ Дорожная карта веб-разработчиков на 2018 год и 🕸️ Изучите веб-разработку с полным стеком .