{
    "version": "https:\/\/jsonfeed.org\/version\/1.1",
    "title": "Блоги: заметки с тегом perl",
    "_rss_description": "Автоматически собираемая лента заметок, написанных в блогах на Эгее",
    "_rss_language": "ru",
    "_itunes_email": "",
    "_itunes_categories_xml": "",
    "_itunes_image": false,
    "_itunes_explicit": "no",
    "home_page_url": "https:\/\/blogengine.me\/blogs\/tags\/perl\/",
    "feed_url": "https:\/\/blogengine.me\/blogs\/tags\/perl\/json\/",
    "icon": false,
    "authors": [
        {
            "name": "Илья Бирман",
            "url": "https:\/\/blogengine.me\/blogs\/",
            "avatar": false
        }
    ],
    "items": [
        {
            "id": "133035",
            "url": "https:\/\/bolknote.ru\/all\/perl-1\/",
            "title": "Perl 1",
            "content_html": "<p>Перл — один из языков, которые помогли мне когда-то начать регулярно зарабатывать в айти. Он уже давно почти никем не используется, тем не менее я к нему отчасти эмоционально привязан, так как программировал на нём много лет и до сих пор неплохо его помню.<\/p>\n<p>Я тут недавно сообразил, что программирую на ПХП с третьей версии, однажды <a href=\"https:\/\/bolknote.ru\/all\/4322\/\">попробовал в действии<\/a> вторую версию и что-то читал про первую, но никогда не видел Перл старее пятой версии, на которой я и программировал когда-то.<\/p>\n<p>К счастью, <a href=\"https:\/\/github.com\/eltikia\/perl1\">его исходники<\/a> довольно просто найти, причём какие-то энтузиасты даже заставили их компилироваться под современными системами, надо только поставить пакет со статическим <tt>glibc<\/tt> и указать путь до него при компиляции.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/bolknote.ru\/pictures\/2024.12.01.1@2x.webp\" width=\"750\" height=\"100\" alt=\"\" \/>\n<\/div>\n<p>К первой версии идёт пятьдесят тестов, написанных на Перле тех времён. Я бегло их просмотрел и, на первый взгляд, язык как будто мало изменился, тем не менее какие-то различия бросаются в глаза. Например, массивы с какого-то перепугу, выглядят иначе — временами без <tt>@<\/tt> в начале, <tt>do<\/tt> каким-то образом позволяют обращаться к ещё не объявленным функциям, а ещё в языке существует переменная с именем «пробел».<\/p>\n<p>Для интереса попробовал запустить <a href=\"https:\/\/bolknote.ru\/all\/1269\/\">небольшую программульку<\/a> для подсчёта количества счастливых билетов, которую я когда-то писал. В исходном виде она не заработала, пришлось немного её изменить:<\/p>\n<pre class=\"e2-text-code\"><code class=\"perl\">for ($i = 0; $i &lt;= 999999; $i++)\n{\n    $a = (&#039;0&#039; x (6 - length($i))) . $i;\n    $c++ if (substr($a, 0, 1) + substr($a, 1, 1) + substr($a, 2, 1)) ==\n    (substr($a, 3, 1) + substr($a, 4, 1) + substr($a, 5, 1));\n}\nprint &quot;$c\\n&quot;;<\/code><\/pre><p>Вот что пришлось исправить: изменить синтаксис цикла, ну и скобок побольше наставить.<\/p>\n<p>Производительность, кстати, изменилась значительно — первая версия выполняет эту программу за 1,7 секунд, а современный Перл на том же оборудовании — за 0,8 секунды.<\/p>\n",
            "date_published": "2024-12-01T23:16:30+05:00",
            "date_modified": "2024-12-02T09:35:55+05:00",
            "tags": [
                "perl",
                "айрхеология",
                "программирование"
            ],
            "author": {
                "name": "Евгений Степанищев",
                "url": "https:\/\/bolknote.ru\/",
                "avatar": "https:\/\/bolknote.ru\/pictures\/userpic\/userpic@2x.jpg?1760600028"
            },
            "_date_published_rfc2822": "Sun, 01 Dec 2024 23:16:30 +0500",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "133035",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": false,
                "links_required": null,
                "og_images": []
            }
        },
        {
            "id": "132610",
            "url": "https:\/\/bolknote.ru\/all\/v-kakoy-kodirovke\/",
            "title": "В какой кодировке?",
            "content_html": "<p>Попался мне недавно на глаза вот этот разворот из детской книжки «Энциклопедия профессора Фортрана» 1991-го года. На ней, как мы видим, высоколобый Новосельцев с указкой говорит, что справа закодирована фраза «ПРОЧИТАЙ ГЛАВУ &quot;ЯЗЫКИ ПРОГРАММИРОВАНИЯ&quot;».<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/bolknote.ru\/pictures\/2024.11.08@2x.jpg\" width=\"1000\" height=\"717\" alt=\"\" \/>\n<\/div>\n<p>Сразу бросается в глаза, что бинарные строки справа не восьмибитные, как мы все привыкли, а на бит короче. Ещё, при внимательном рассмотрении, в закодированных числах узнаются пробелы, у них код 32 или <tt>0100000<\/tt>. Только первый почему-то на одиннадцатой позиции, а не на девятой, как в фразе на русском.<\/p>\n<p>Всё это меня очень заинтересовало, я отложил себе эту картинку, а сегодня, по пути домой, разобрался в этих странностях.<\/p>\n<p>Воспользовавшись программой для распознавания, я перевёл текст на картинке в буквы и цифры, вырезал оттуда закодированное и попробовал перегнать этот кусок в буквы. Получилась следующая строка: <tt>pro~itajte glawu &quot;qzyki programmirowaniq&quot;<\/tt>.<\/p>\n<p>Какой-то странный транслит, но что написано догадаться можно. Заодно стало понятно почему позиции пробела не совпадают — на самом деле закодировано не «прочитай», а «прочитайте».<\/p>\n<p>Теперь осталось понять что это за кодировка. Не уверен, что я когда-либо в жизни сталкивался с КОИ-7, но название такое слышал. Предположил, что это она и не ошибся.<\/p>\n<p>Латинские символы видно, потому что эта кодировка содержит в себе несколько наборов символов, которые надо переключать специальным кодом. Русские символы находятся в тех же позициях, что и латинские, а поскольку кодировка ЮТФ-8, который мы все пользуемся, совместима с латинским набором КОИ-7, мы видим не бинарный мусор, а какие-то буквы.<\/p>\n<p>В конечном счёте, я написал небольшую программу на Перле, чтобы вывести строку на русском:<\/p>\n<pre class=\"e2-text-code\"><code class=\"perl\">#!\/usr\/bin\/perl\nuse Text::Iconv;\n\nmy @codes = qw(\n    1110000 1110010 1101111\n    1111110 1101001 1110100\n    1100001 1101010 1110100\n    1100101 0100000 1100111\n    1101100 1100001 1110111\n    1110101 0100000 0100010\n    1110001 1111010 1111001\n    1101011 1101001 0100000\n    1110000 1110010 1101111\n    1100111 1110010 1100001\n    1101101 1101101 1101001\n    1110010 1101111 1110111\n    1100001 1101110 1101001\n    1110001 0100010\n);\n\n$conv = Text::Iconv-&gt;new(&quot;KOI-7&quot;, &quot;UTF-8&quot;);\n\n# ПРОЧИТАЙТЕ ГЛАВУ &quot;ЯЗЫКИ ПРОГРАММИРОВАНИЯ&quot;\nprint $conv-&gt;convert(chr oct &quot;0b$_&quot;) for @codes, &quot;\\n&quot;;<\/code><\/pre><p>Перл, конечно, малопопулярный язык, но тут вполне читаемый даже для тех, кто его не знает. Его я выбрал из-за лени — у него есть конструкция <tt>qw( … )<\/tt>, которая позволяет создавать массивы из строк без кавычек и запятых, так что в него просто было удобно запихнуть закодированный текст, каким он получился после распознавания.<\/p>\n<p>В конечном счёте раскодированный текст выглядит так: <tt>ПРОЧИТАЙТЕ ГЛАВУ &quot;ЯЗЫКИ ПРОГРАММИРОВАНИЯ&quot;<\/tt>. Лобастый Новосельцев немного нас обманывает.<\/p>\n",
            "date_published": "2024-11-08T20:25:51+05:00",
            "date_modified": "2024-11-09T11:17:29+05:00",
            "tags": [
                "perl",
                "программирование"
            ],
            "author": {
                "name": "Евгений Степанищев",
                "url": "https:\/\/bolknote.ru\/",
                "avatar": "https:\/\/bolknote.ru\/pictures\/userpic\/userpic@2x.jpg?1760600028"
            },
            "_date_published_rfc2822": "Fri, 08 Nov 2024 20:25:51 +0500",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "132610",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": false,
                "links_required": null,
                "og_images": []
            }
        },
        {
            "id": "125250",
            "url": "https:\/\/bolknote.ru\/all\/1269\/",
            "title": "Счастливые билеты",
            "content_html": "<p>Написал небольшую програмку на Perl для подсчёта количества счастливых билетов в последовательности от 000000 до 999999. Их оказалось 55252.<\/p>\n<pre class=\"e2-text-code\"><code class=\"perl\">for (0...999999)\n{\n    $a = (&#039;0&#039; x (6-length $_)) . $_;\n    $c++ if substr($a, 0, 1)+substr($a, 1, 1)+substr($a, 2, 1) ==\n            substr($a, 3, 1)+substr($a, 4, 1)+substr($a, 5, 1);\n}\nprint &quot;$c\\n&quot;;<\/code><\/pre>",
            "date_published": "2003-08-26T17:23:10+05:00",
            "date_modified": "2023-12-30T17:15:18+05:00",
            "tags": [
                "perl",
                "программирование"
            ],
            "author": {
                "name": "Евгений Степанищев",
                "url": "https:\/\/bolknote.ru\/",
                "avatar": "https:\/\/bolknote.ru\/pictures\/userpic\/userpic@2x.jpg?1760600028"
            },
            "_date_published_rfc2822": "Tue, 26 Aug 2003 17:23:10 +0500",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "125250",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": false,
                "links_required": null,
                "og_images": []
            }
        }
    ],
    "_e2_version": 4079,
    "_e2_ua_string": "Aegea 11.0 (v4079e)"
}