англійськафранцузькаіспанська

Значок OnWorks

perl581delta - онлайн у хмарі

Запустіть perl581delta у постачальника безкоштовного хостингу OnWorks через Ubuntu Online, Fedora Online, онлайн-емулятор Windows або онлайн-емулятор MAC OS

Це команда perl581delta, яку можна запустити в постачальнику безкоштовного хостингу OnWorks за допомогою однієї з наших численних безкоштовних робочих станцій, таких як Ubuntu Online, Fedora Online, онлайн емулятор Windows або онлайн емулятор MAC OS

ПРОГРАМА:

ІМ'Я


perl581delta - що нового для perl v5.8.1

ОПИС


У цьому документі описано відмінності між версіями 5.8.0 і 5.8.1.

Якщо ви оновлюєте попередню версію, наприклад 5.6.1, спочатку прочитайте perl58delta,
який описує відмінності між 5.6.0 та 5.8.0.

Якщо вам цікаво 5.6.1, то з точки зору виправлення помилок вона була досить ідентичною
випуск для розробки 5.7.1. Розгублений? Сподіваюся, ця часова шкала трохи допоможе: вона перераховує
нові основні випуски, випуски їх обслуговування та випуски для розробки.

Нова розробка технічного обслуговування

5.6.0 2000 березня 22 р
5.7.0 2000-02 вересня
5.6.1 2001-08 квітня
5.7.1 2001-09 квітня
5.7.2 2001-13 липня
5.7.3 2002 березня 05 р
5.8.0 2002-18 липня
5.8.1 2003-25 вересня

Несумісний Зміни


Мішанина Рандомізація
В основному з міркувань безпеки «випадкове впорядкування» хешів було зроблено ще більше
випадковий. Раніше тоді порядок хеш-елементів від клавіші (), values ​​() та кожен () було
по суті випадковий, він все ще повторювався. Однак зараз порядок змінюється
різні запуски Perl.

Perl має ніколи гарантований будь-який замовлення of мішанина ключі, а замовлення вже є
змінювався кілька разів протягом життя Perl 5. Крім того, порядок хеш-ключів змінився
Порядок вставки завжди впливав і продовжує на нього впливати.

Додаткова випадковість може вплинути на програми.

Один із можливих сценаріїв – коли вихід програми містить хеш-дані. Для
наприклад, якщо ви використовували модуль Data::Dumper для вивантаження даних у різні файли, і
потім порівняйте файли, щоб побачити, чи змінилися дані, тепер у вас буде false
позитивні, оскільки порядок скидання хешів буде відрізнятися. Загалом лікування полягає в
сортувати ключі (або значення); зокрема для Data::Dumper використовувати "клавіші сортування"
варіант. Якщо якийсь конкретний порядок дійсно важливий, використовуйте прив’язані хеші: наприклад
Модуль Tie::IxHash, який за замовчуванням зберігає порядок, у якому були хеш-елементи
доданий.

Більш тонка проблема — опора на порядок «глобального знищення». Ось що
відбувається в кінці виконання: Perl знищує всі структури даних, включаючи дані користувача.
Якщо ваші деструктори (підпрограми DESTROY) прийняли будь-який конкретний порядок для
глобальне руйнування, попереду можуть виникнути проблеми. Наприклад, у деструкторі one
Ви не можете припустити, що об’єкти будь-якого іншого класу все ще доступні, якщо тільки ви
тримати посилання на них. Якщо для змінної середовища PERL_DESTRUCT_LEVEL встановлено значення a
ненульове значення, або якщо Perl виходить із створеного потоку, він також знищить звичайний
посилання та таблиці символів, які більше не використовуються. Ви не можете викликати метод класу
або звичайна функція для класу, зібраного таким чином.

Рандомізація хешування, безсумнівно, розкриє приховані припущення щодо певних особливостей
впорядкування хеш-елементів і явні помилки: це виявило кілька помилок в ядрі Perl і
основні модулі.

Щоб вимкнути рандомізацію хешування під час виконання, встановіть змінну середовища PERL_HASH_SEED
до 0 (нуль) перед запуском Perl (додаткову інформацію див. у "PERL_HASH_SEED" у perlrun), або
щоб повністю вимкнути функцію під час компіляції, компілюйте за допомогою "-DNO_HASH_SEED" (див.
ВСТАНОВИТИ).

Див. «Атаки алгоритмічної складності» в perlsec для оригінального обґрунтування цього
змінити.

UTF-8 On Дескриптори файлів Немає Довше Активоване By Місце дії
У Perl 5.8.0 всі дескриптори файлів, включаючи стандартні дескриптори файлів, були неявно встановлені на
бути в Unicode UTF-8, якщо параметри мовного стандарту вказують на використання UTF-8. Ця особливість
викликав забагато проблем, тому цю функцію було вимкнено та перероблено: див. «Core
Покращення».

Одночисло v-струни він має немає довше v-струни перед тим "=>"
Функція рядків версій або v-рядків (див. «Рядки версій» у perldata), представлена ​​в
Perl 5.6.0 був джерелом певної плутанини, особливо коли користувач цього не хотів
використовуйте його, але Perl думав, що він знає краще. Особливо клопітною була ця функція
перед "=>" рядок версії ("v", за яким слідують цифри) інтерпретується як
v-рядок замість рядкового літералу. Іншими словами:

%h = ( v65 => 42 );

означає, починаючи з Perl 5.6.0

%h = ( 'A' => 42 );

(принаймні, на платформах нащадків ASCII) Perl 5.8.1 відновлює більш природний
інтерпретація

%h = ( 'v65' => 42 );

Багаточисельні v-рядки, такі як v65.66 і 65.66.67, все ще залишаються v-рядками в Perl
5.8.

(Win32) The -C перемикач Має Було Повторне призначення
Перемикач -C змінився несумісним чином. Лише стара семантика цього перемикача
має сенс у Win32 і лише у всесвіті "використовувати utf8" у випусках 5.6.x, і не
сенс для реалізації Unicode у версії 5.8.0. Оскільки цей перемикач не можна було використовувати
будь-хто, він був перепрофільований. Поведінка, яку цей перемикач увімкнув у версії 5.6.x
релізи можуть підтримуватися прозоро, залежно від даних у майбутньому випуску.

Щоб дізнатися про нове життя цього перемикача, див. «UTF-8 більше не за замовчуванням у мовних стандартах UTF-8», і
"-C" у perlrun.

(Win32) The /d перемикач Of cmd.exe
Perl 5.8.1 використовує перемикач /d під час внутрішнього запуску оболонки cmd.exe для system (),
backticks, а також при відкритті каналів до зовнішніх програм. Додатковий перемикач вимикає
виконання команд автозапуску з реєстру, що зазвичай вважається небажаним
при запуску зовнішніх програм. Якщо ви хочете зберегти сумісність зі старшими
поведінки, встановіть для PERL5SHELL у своєму середовищі значення "cmd /x/c".

Core покращення


UTF-8 немає довше дефолт при UTF-8 місцевий
У Perl 5.8.0 було введено багато функцій Unicode. В одному з них виявилося більше
неприємність, ніж користь: автоматична (і безшумна) "UTF-8-іфікація" дескрипторів файлів,
включаючи стандартні дескриптори файлів, якщо параметри локалі користувача вказують на використання UTF-8.

Наприклад, якщо у вас було "en_US.UTF-8" як місцевість, ваші STDIN і STDOUT були
автоматично "UTF-8", іншими словами, був створений неявний binmode(..., ":utf8"). Це
означало, що спроба надрукувати, скажімо, хр(0xff), закінчився друком байтів 0xc3 0xbf. Навряд чи
що ви мали на увазі, якщо ви не знали про цю функцію Perl 5.8.0. Проблема в тому
що переважна більшість людей не була: наприклад, у випусках RedHat 8 і 9
дефолт параметром локалі є UTF-8, тому всі користувачі RedHat отримали дескриптори файлів UTF-8, незалежно від того,
хотів цього чи ні. Біль посилився через впровадження Unicode Perl 5.8.0
(все ще) мають неприємні помилки, особливо пов’язані з використанням s/// та tr///. (Це помилки
було виправлено в 5.8.1)

Тому було прийнято рішення повернути функцію назад і змінити її з неявного мовлення
за замовчуванням явний свідомий параметр. Новий параметр командного рядка Perl "-C" і його
відповідну змінну середовища PERL_UNICODE тепер можна використовувати для керування тим, як Perl і
Unicode взаємодіє на таких інтерфейсах, як введення-виведення, і, наприклад, аргументи командного рядка. Побачити
"-C" у perlrun та "PERL_UNICODE" у perlrun для отримання додаткової інформації.

Небезпечно сигнали знову доступний
У Perl 5.8.0 були введені так звані «безпечні сигнали». Це означає, що Perl no
long обробляє сигнали негайно, але замість цього «між кодами операцій», коли це безпечно зробити
так. Попередня негайна обробка може легко пошкодити внутрішній стан Perl,
що призводить до таємничих аварій.

Однак у нової безпечнішої моделі є й свої проблеми. Тому що тепер код операції, основна одиниця
Виконання Perl ніколи не переривається, а натомість дозволяє виконуватися до завершення, певно
операції, які зараз можуть зайняти багато часу, дійсно займають багато часу. Наприклад, певні
мережеві операції мають власні механізми блокування та тайм-ауту, а також можливість
було б добре перервати їх негайно.

Тому perl 5.8.1 вводить "бекдор" для відновлення попередньої версії 5.8.0 (до 5.7.3, насправді)
поведінка сигналу. Просто встановіть для змінної середовища PERL_SIGNALS значення "unsafe" і стару
миттєва (і небезпечна) поведінка обробки сигналів повертається. Дивіться "PERL_SIGNALS" у perlrun
і "Відкладені сигнали (безпечні сигнали)" у perlipc.

У абсолютно не пов’язаних новинах тепер ви можете використовувати безпечні сигнали з POSIX::SigAction. Побачити
"POSIX::SigAction" в POSIX.

Зв'язаний Масиви з Негативний масив індекси
Раніше індекси передавались методам "FETCH", "STORE", "EXISTS" і "DELETE" у зв'язаних
клас масиву завжди був невід'ємним. Якби фактичний аргумент був негативним, Perl би
неявно викликати FETCHSIZE і додати результат до індексу, перш ніж передавати результат до
метод зв'язаного масиву. Ця поведінка тепер необов’язкова. Якщо клас зв'язаного масиву містить a
змінна пакета з іменем $NEGATIVE_INDICES, яка має істинне значення, від’ємні значення
буде передано до "FETCH", "STORE", "EXISTS" і "DELETE" без змін.

місцевий ${$x}
Синтаксис

місцевий ${$x}
місцевий @{$x}
місцевий %{$x}

тепер виконайте локалізацію змінних, враховуючи, що $x є дійсним ім'ям змінної.

Unicode Характер Database 4.0.0
Копія бази даних символів Unicode, що входить до Perl 5.8, була оновлена ​​до версії 4.0.0
з 3.2.0. Це означає, наприклад, що властивості символу Unicode такі ж, як у
Юнікод 4.0.0.

Знецінення Попередження
Є одна нова функція, яка не підтримується. Perl 5.8.0 забув додати деякі попередження про припинення підтримки,
ці попередження тепер додано. Нарешті, нагадування про загрожує видалення функції.

(Нагадування) Псевдо-хеші він має не підтримується (справді)

У Perl 5.8.0 псевдохеші застаріли і будуть видалені в Perl 5.10.0, див.
perl58delta для деталей. Кожна спроба отримати доступ до псевдохешів буде викликати попередження
«Псевдо-хеші не підтримуються». Якщо ви дійсно хочете продовжувати використовувати псевдохеш, але
щоб не бачити попередження про припинення підтримки, використовуйте:

немає попереджень «застаріло»;

Або ви можете продовжувати використовувати поля pragma, але, будь ласка, не чекайте структур даних
більше бути псевдохешами.

(Нагадування) 5.005 стилі теми він має не підтримується (справді)

Потоки у стилі 5.005 (активовані за допомогою "використання потоку;") були застарілі в Perl 5.8.0 і будуть
видалено після Perl 5.8, див. perl58delta для детальної інформації. Кожне створення потоку в стилі 5.005
викличе попередження "5.005 потоків застаріли". Якщо ви дійсно хочете продовжити
використовуючи потоки 5.005, але не бачити попереджень про припинення підтримки, використовуйте:

немає попереджень «застаріло»;

(Нагадування) The $* змінна is не підтримується (справді)

Змінна $*, яка контролює багаторядкову відповідність, не підтримується та буде вилучена
після 5.8. Змінна була застарілою протягом тривалого часу, і є попередження про застарілість
Вказано "Використання $* застаріло", тепер змінну буде нарешті видалено. The
Функціональність була замінена модифікаторами "/s" і "/m" для відповідності шаблону. Якщо
ви дійсно хочете продовжувати використовувати змінну $*, але не бачити попереджень про припинення підтримки,
використання:

немає попереджень «застаріло»;

Різне покращення
"карта" в контексті void більше не коштує дорого. "mapa" тепер залежить від контексту і не буде
побудувати список, якщо він викликається в контексті void.

Якщо сервер закриває сокет під час друку на нього, клієнт отримує SIGPIPE.
Хоча ця нова функція не планувалася, вона, природно, випала із змін PerlIO, і так
вважати випадковою ознакою.

PerlIO::get_layers(FH) повертає назви шарів PerlIO, активних у дескрипторі файлу.

PerlIO::via layers тепер може мати додатковий метод UTF8, щоб вказати, чи є шар
хоче "auto-:utf8" потік.

utf8::is_utf8() було додано як швидкий спосіб перевірити, чи закодовано скаляр
внутрішньо в UTF-8 (Unicode).

Модулі та Прагмата


оновлений Модулі і Прагмата
Наступні модулі та прагмати були оновлені з Perl 5.8.0:

база
B::Байт-код
У набагато кращій формі, ніж колись. Все ще далеко до досконалості, але, можливо, варто того
спробуйте.

B:: Коротко
B::Виїхати
еталонний тест
Додаткова функція ":hireswallclock" тепер дозволяє використовувати настінний годинник високої роздільної здатності
разів (використовує Time::HiRes).

ByteLoader
Дивіться B::Bytecode.

bytes
Тепер має байти::substr.

CGI
charnames
Тепер можна мати власні псевдоніми імен персонажів.

CPAN
Тепер є простий інтерфейс командного рядка для модуля CPAN.pm, який називається cpan.

Дані :: Самоскид
Нова опція, Pair, дозволяє вибрати роздільник між хеш-ключами та значеннями.

DB_File
Розробка::PPPort
Дайджест :: MD5
Кодувати
Значні оновлення функціональності прагми кодування (tr/// і DATA
дескриптор файлу, формати).

Якщо дескриптор файлу позначено як такий, що має кодування, символи, які не можна зіставити, є
виявлено вже під час введення, а не пізніше (коли використовуються пошкоджені дані).

Таблицю перетворення ISO 8859-6 було виправлено (0x30..0x39 помилково відображено
на U+0660..U+0669, замість U+0030..U+0039). Перетворення GSM 03.38 не відбулося
правильно обробляти escape-послідовності. Додано кодування UTF-7 (що робить Encode
функція в комплекті з Unicode::String).

поля
libnet
Математика :: BigInt
Багато помилок було виправлено з версії 1.60, версії, включеної в Perl v5.8.0.
Особливої ​​уваги заслуговує помилка в Calc, через яку у деяких див і mod вийшли з ладу
великі значення та виправлення обробки поганих введених даних.

Були додані деякі нові функції, наприклад broot() тепер ви можете передавати параметри
config() змінити деякі налаштування під час виконання, і тепер можна перехопити
створення NaN і нескінченності.

Як завжди, відбулися деякі оптимізації, які зробили обчислення в цілому дещо швидшими. в
У деяких випадках насправді набагато швидше. Особливо альтернативні бібліотеки, як
Math::BigInt::GMP виграє від цього. Крім того, багато досить незграбних рутин
як fsqrt() та бити() зараз набагато швидше.

MIME :: Base64
НАСТУПНИЙ
Діамантове успадкування тепер працює.

Мережа :: Ping
PerlIO :: скаляр
Читання з нерядкових скалярів (наприклад, спеціальні змінні, див. perlvar) тепер працює.

подлятори
Pod::LaTeX
PodParsers
Pod::Perldoc
Повне переписування. Як побічний ефект, більше не відмовляється запускатися під час запуску через root.

Скаляр :: Util
Нові утиліти: refaddr, isvstring, looks_like_number, set_prototype.

Можливість зберігання
Тепер можна зберігати посилання на код (через B::Deparse, тому не надійно).

строгий
Попередні версії суворої прагми не перевіряли неявно передані параметри
до його підпрограми «імпорт» (використання) та «вилучення» (ні). Це викликало фальшиву ідіому таку
як:

використовувати строгий qw(@ISA);
@ISA = qw(Foo);

Однак це (ймовірно) викликало хибне очікування, що строгі refs, vars і
субтитри застосовувалися (і що @ISA якимось чином «оголошено»). Але суворі судді,
vars і subs є НЕ застосовується при використанні цієї помилкової ідіоми.

Починаючи з Perl 5.8.1, вище волі викликати помилку. Це може спричинити
програми, які раніше виконувались, здавалося б, правильно, без попереджень і помилок, до збою
при виконанні під 5.8.1. Це відбувається тому, що

використовувати строгий qw(@ISA);

тепер не вийде з помилкою:

Невідомий тег(и) "суворого" "@ISA"

Засіб вирішення цієї проблеми полягає в заміні цього коду правильною ідіомою:

використовувати суворий;
використовувати vars qw(@ISA);
@ISA = qw(Foo);

Термін::ANSIcolor
Тест::Привязка
Тепер набагато більш вибагливі щодо зайвих або відсутніх результатів тестових скриптів.

Тест::Більше
Тест::Простий
Текст::Збалансований
Час :: HiRes
Використання nanosleep(), якщо доступний, дозволяє змішувати секунди сну з будильниками.

теми
Кілька виправлень, наприклад для приєднатися () проблеми та витік пам’яті. На деяких платформах
(наприклад, Linux), які використовують glibc, мінімальний обсяг пам'яті одного потоку ithread був
зменшено на кілька сотень кілобайт.

threads:: shared
Виправлено багато витоків пам’яті.

Unicode :: Collate
Юнікод::Нормалізація
Win32::GetFolderPath
Win32::GetOSVersion
Тепер повертає додаткову інформацію.

Утиліта Зміни


Утиліта "h2xs" тепер створює більш сучасний макет: Foo-Bar/lib/Foo/Bar.pm замість
Foo/Bar/Bar.pm. Також зараз називається стандартний тест т/фу-бар.т замість т/1.т.

Налагоджувач Perl (lib/perl5db.pl) тепер детально задокументовано та знайдено помилки
поки документування виправлено.

"perldoc" був переписаний з нуля, щоб бути більш надійним і багатим на функції.

"perlcc -B" тепер працює принаймні дещо краще, тоді як "perlcc -c" скоріше зламаний.
(Набір компіляторів Perl в цілому продовжує бути експериментальним.)

Нові документація


perl573delta був доданий, щоб перерахувати відмінності між (зараз досить застарілими)
випуски розробки 5.7.2 і 5.7.3.

було додано perl58delta: це perldelta версії 5.8.0, де детально описані відмінності
між 5.6.0 і 5.8.0.

perlartistic було додано: це художня ліцензія у форматі pod, що спрощує роботу
щоб модулі посилалися на нього.

perlcheat був доданий: це шпаргалка Perl.

perlgpl було додано: це Загальна публічна ліцензія GNU у форматі pod, що робить його
модулям легше посилатися на нього.

perlmacosx було додано, щоб розповісти про встановлення та використання Perl в Mac OS X.

perlos400 було додано, щоб розповісти про встановлення та використання Perl в OS/400 PASE.

Додано perlreref: це швидке посилання на регулярні вирази.

Установка та конфігурація поліпшення


Стандартне розташування Perl Unix, /usr/bin/perl, більше не перезаписується за замовчуванням, якщо він
існує. Ця зміна була дуже розумною, оскільки багато постачальників Unix вже надають a
/usr/bin/perl, але водночас багато системних утиліт можуть залежати від цієї точної версії
Perl, тому краще не перезаписувати його.

Тепер можна вказати каталоги встановлення для сайтів і сторінок постачальника man і HTML, і
скрипти сайту та постачальника. Побачити ВСТАНОВИТИ.

Тепер можна вказати каталог призначення для встановлення Perl, вказавши
Змінна DESTDIR для "зробити встановлення". (Ця функція дещо відрізняється від
попередній «Налаштувати -Dinstallprefix=...».) Див ВСТАНОВИТИ.

gcc версії 3.x представило нове попередження, яке викликало багато шуму під час Perl
компіляція: "gcc -Ialreadyknowndirectory (попередження: зміна порядку пошуку)". Це попередження
тепер було уникнуто за допомогою Configure, видаляючи такі каталоги перед компіляцією.

Тепер можна створювати підмножини основних модулів Perl за допомогою прапорів Configure
"-Dnoextensions=..." і "-Dnoextensions=...", див ВСТАНОВИТИ.

Специфічна для платформи Удосконалення
У Cygwin Perl тепер можна створювати з потоками ("Configure -Duseithreads"). Це працює з
як Cygwin 1.3.22, так і Cygwin 1.5.3.

У нових версіях FreeBSD компіляція Perl 5.8.0 не вдалася через спробу використання malloc.h,
який у FreeBSD є просто фіктивним файлом і фатальною помилкою, яку можна навіть спробувати використати. Тепер malloc.h
не використовується.

Тепер відомо, що Perl також вбудовується в Hitachi HI-UXMPP.

Тепер відомо, що Perl знову збирається в LynxOS.

Mac OS X тепер встановлюється з номером версії Perl, вбудованим в імена каталогів інсталяції
для легшого оновлення скомпільованого користувачем Perl та каталогів встановлення загалом
більш стандартні. Іншими словами, установка за замовчуванням більше не порушує Apple-
надано Perl. З іншого боку, за допомогою «Налаштувати -Dprefix=/ usr«Тепер ти дійсно можеш
замініть наданий Apple Perl (будь ласка be обережний).

Mac OS X тепер за замовчуванням будує Perl статично. Ця зміна була зроблена в основному для швидшого
час запуску. Наданий Apple Perl все ще динамічно пов’язується та надається спільно з вами
може увімкнути спільне використання для ваших власних збірок Perl за допомогою "Configure -Duseshrplib".

Perl було перенесено в середовище IBM OS/400 PASE. Найкращий спосіб створити Perl для
PASE — використовувати хост AIX як середовище перехресної компіляції. Дивіться README.os400.

Була додана ще одна опція крос-компіляції: тепер Perl будується на OpenZaurus, an
Дистрибутив Linux на основі Mandrake + Embedix для КПК Sharp Zaurus. Див
Файл Cross/README.

Tru64 при використанні gcc 3 скидає оптимізацію для toke.c до "-O2" через гігант
використання пам'яті зі стандартним "-O3".

Tru64 тепер може створювати Perl з новішими БД Berkeley.

Побудова Perl на WinCE була значно покращена, див README.ce та README.perlce.

Selected Помилка Виправлення


закриття, евал та лексичних
Було багато виправлень у сфері анонімних підкладок, лексичних слів і закриттів. Хоча
це означає, що Perl тепер більш «правильний», можливо, що якийсь існуючий код буде
поломка, яка буває пов'язана з невірною поведінкою. На практиці це малоймовірно, хіба що
ваш код містить дуже складну вкладку анонімних підпорядкувань, evals та лексичних.

Загальний фіксований
Якщо дескриптор вхідного файлу позначений як ":utf8", і Perl бачить, що під час виконання надходить незаконний UTF-8
" ", якщо попередження ввімкнено, попередження видається негайно - замість мовчання
про це, а потім Perl незадоволений пошкодженими даними. (Шар ":encoding(utf8)".
також працює так само.)

binmode(SOCKET, ":utf8") працював лише на стороні входу, а не на стороні виходу
розетка. Тепер це працює в обох напрямках.

Для багатопотокових Perl певні функції системної бази даних, наприклад getpwent () та getgrent() зараз
динамічно збільшувати буфер результатів, замість того, щоб виходити з ладу. Це означає, що на сайтах с
багатьох користувачів і груп функції більше не виходять з ладу, повертаючи лише часткові результати.

Perl 5.8.0 випадково порушив можливість користувачам визначати свої власні
у верхньому регістрі<->нижньому регістрі відображення Unicode (як рекламується Camel). Ця функція має
було виправлено, а також краще задокументовано.

У 5.8.0 це

$some_unicode .= ;

не працював належним чином, але натомість пошкодив дані. Тепер це виправлено.

Прив’язані методи, такі як FETCH тощо, тепер можуть безпечно отримати доступ до зв’язаних значень, тобто в результаті a
рекурсивний виклик FETCH тощо. Однак не забудьте порушити рекурсію.

Під час запуску Perl блокує сигнал SIGFPE, оскільки Perl мало що може з цим зробити.
Раніше це блокування діяло також для програм, виконуваних з Perl. Тепер
Perl відновлює початкову процедуру обробки SIGFPE, якою б вона не була, перед запуском
зовнішні програми.

Номери рядків у сценаріях Perl тепер можуть перевищувати 65536 або 2**16. (Скрипти Perl мають
завжди міг бути більшим, це просто номер рядка для повідомлених помилок
і попередження "загорнулися".) У той час як великі сценарії зазвичай вказують на необхідність
трохи переосмисліть свій код, такі Perl-скрипти існують, наприклад, як результати згенерованих
код. Тепер номери рядків можуть йти аж до 4294967296 або 2**32.

Специфічна для платформи фіксований
Linux

· Встановлення $0 знову працює (з певними обмеженнями, з якими Perl не може нічого зробити: див
"$0" у perlvar)

HP-UX

· Налаштування $0 тепер працює.

VMS

· Тепер конфігурація перевіряє наявність "poll()", а IO::Poll тепер використовує
функція, надана постачальником, якщо виявлена.

· Рідкісне порушення доступу під час запуску Perl могло статися, якщо було встановлено образ Perl
з привілеями або якщо був ідентифікатор із атрибутом підсистеми, встановленим у файлі
список прав процесу. Будь-яка з цих обставин спричинила порушення коду
містив помилку вказівника. Виправлено помилкову арифметику вказівника.

· Обмеження довжини значень (не ключів) у хеші %ENV було збільшено з 255 байт
до 32640 байт (крім випадків, коли параметр PERL_ENV_TABLES перекриває використання за замовчуванням
логічні імена для %ENV). Якщо необхідно отримати доступ до цих довгих значень ззовні
Perl, майте на увазі, що вони реалізовані за допомогою логічних імен списку пошуку, які зберігаються
значення в частинах, кожен 255-байтовий фрагмент (до 128 з них) є елементом у
список пошуку. Під час пошуку в %ENV з Perl елементи поєднуються
в єдине значення. Існуюча специфічна для VMS можливість доступу до окремих елементів
логічної назви списку пошуку за допомогою синтаксису $ENV{'foo;N'} (де N - список пошуку
індекс) є неушкодженим.

· Реалізація трубопроводів тепер використовує локальні, а не глобальні символи DCL для між-
процес комунікації.

· File::Find може заплутатися під час переходу до відносного каталогу, ім'я якого
зіткнувся з логічним ім'ям. Цю проблему було виправлено шляхом додавання каталогу
синтаксису відносних імен шляхів, таким чином запобігаючи трансляції логічних імен.

Win32

· Витік пам'яті в вилка () емуляцію виправлено.

· Повернене значення ioctl() вбудована функція була випадково зламана в версії 5.8.0.
Це було виправлено.

· Внутрішній цикл повідомлень, який іноді виконує perl під час операцій блокування
заважає повідомленням, які були зовнішніми для Perl. Це часто призводило до блокування
операції завершуються передчасно або повертають неправильні результати, коли Perl був
виконується в середовищах, які можуть генерувати повідомлення Windows. Це було
виправлено.

· Труби та розетки тепер автоматично перебувають у двійковому режимі.

· Чотириаргументна форма вибрати () не зберіг $! (errno) правильно, коли там
були помилки основного виклику. Тепер це виправлено.

· Проблема "CR CR LF" була виправлена, binmode(FH, ":crlf") тепер фактично
ні-оп.

Нові or Змінено Діагностика


Усі попередження, пов’язані з упакувати() та розпакувати() були більш інформативними та послідовними.

Змінено "A нитка вийшли в той час як %d теми були біг"
Стара версія

Потік вийшов, поки ще %d потоків ще працювали

було вводить в оману, тому що "інший" включав також потік, що дає попередження.

Вилучено «Спроба до ясно a обмежений хеш"
Очистити обмежений хеш не є незаконним, тому попередження було видалено.

Нові «Незаконно декларація of анонімний підпрограма"
Ви повинні вказати блок коду для "sub".

Змінено «Недійсний діапазон "%s" in транслітерація оператор"
Стара версія

Недійсний діапазон [] "%s" в операторі транслітерації

був просто неправильним, тому що в tr// немає діапазонів "[]"/.

Нові «Пропав безвісти контроль бак ім'я in \c"
Самозрозуміло.

Нові «Новий рядок in вирівнювання по лівому краю рядок та цінності %s"
Пробіли з'являться після нового рядка, що, ймовірно, не те, що ви мали
розум.

Нові «Можливо пріоритет проблема on розрядно %c оператор"
Якщо ви так думаєте

$x і $y == 0

перевіряє, чи дорівнює нулю порозрядне І для $x і $y, вам сподобається це попередження.

Нові «Псевдо-геші він має застарів"
Це попередження мало бути вже в 5.8.0, оскільки вони є.

Нові "читати () on %s дескриптор файлу %s"
Ви не можете читати () (Або sysread()) із закритого чи невідкритого файлу.

Нові "5.005 теми він має застарів"
Це попередження мало бути вже в 5.8.0, оскільки вони є.

Нові «Зв'язано змінна звільнений в той час як як і раніше in використовувати"
Щось вимкнуло зв’язану змінну в реальному часі, Perl грає безпечно, виручаючи.

Нові "До%s: незаконний відображення '%s'"
Було зазначено незаконне відображення регістра Unicode, визначене користувачем.

Нові «Використовуйте of звільнений значення in ітерація"
Щось змінило значення, які повторюються. Це не добре.

Змінено Внутрішні


Ці новини мають значення для вас, лише якщо ви пишете код XS або хочете знати про це чи зламати
Внутрішні Perl (використовуючи Devel::Peek або будь-який із модулів "B::"), або люблять запускати Perl
з опцією "-D".

Приклади вбудовування perlembed були переглянуті, щоб бути сучасними та послідовними:
наприклад, правильне використання PERL_SYS_INIT3() та PERL_SYS_TERM().

Була проведена широка переробка коду pad (коду, що відповідає за лексичні змінні).
під керівництвом Дейва Мітчелла.

Велика робота над V-струнами Джона Пікока.

Довжина та позиція UTF-8: щоб прискорити обробку скалярів Unicode (UTF-8),
був введений кеш. Потенційні проблеми виникають, якщо розширення обходить офіційні API
і безпосередньо змінює PV SV: кеш UTF-8 не очищається, як слід.

API, застарілі в Perl 5.8.0, як-от sv_2pv, sv_catpvn, sv_catsv, sv_setsv, знову
в наявності.

Деякі API-інтерфейси C ядра Perl, такі як cxinc і regatom, більше не доступні для кодування
поза межами ядра Perl розширень ядра Perl. Це навмисне. Вони ніколи
мали бути доступні з коротшими назвами, і якщо ваша програма залежить від них,
вам слід (соромитися і) зв’язатися з perl5-porters, щоб обговорити, які є правильні API.

Деякі API ядра Perl C, як-от "Perl_list", більше не доступні без "Perl_"
префікс. Якщо ваш модуль XS перестає працювати, тому що деякі функції не можуть бути знайдені, у багатьох
У випадках просте виправлення полягає в тому, щоб додати префікс "Perl_" до функції та контексту потоку
"aTHX_" як перший аргумент виклику функції. Так і має бути завжди
було зроблено: дозволити формам Perl_less витікати з ядра було випадковістю. Для
cleaner embedding, ви також можете примусити це зробити для всіх API, визначивши під час компіляції cpp
визначити PERL_NO_SHORT_NAMES.

Perl_save_bool() додано.

Об'єкти регулярного виразу (створені за допомогою "qr") тепер мають S-magic, а не R-magic. Це виправлено
регулярні вирази у формі /...(??{...;$x})/, щоб більше не ігнорувати зміни, внесені до $x. S-магія
уникає відмови від оптимізації кешування та створення (??{...}) конструкцій непристойно повільними.
(і, отже, марні). Дивіться також «Магічні змінні» в perlguts. Regexp::Copy був
постраждалих від цієї зміни.

Внутрішні налагоджувальні макроси Perl ВІДЛАГОДЖУВАТИ() та DEB() були перейменовані в PERL_DEBUG() та
PERL_DEB() щоб уникнути конфліктів простору імен.

"-DL" видалено (тест витоку був зламаний і не підтримувався роками, використовуйте альтернативу
налагодження malloc або інструментів, таких як valgrind і Purify).

Додано докладний модифікатор "v" для "-DXv" і "-Dsv", див. perlrun.

Нові Випробування


У Perl 5.8.0 було близько 69000 700 окремих тестів у приблизно 5.8.1 тестових файлах, у Perl XNUMX
близько 77000 окремих тестів у приблизно 780 тестових файлах. Точні цифри залежать від
конфігурації Perl і на платформі операційної системи.

Відомий Проблеми


Рандомізація хешування, згадана в «Несумісних змінах», безумовно проблематична: it
розбудить сплячих клопів і виштовхне погані припущення.

Якщо ви хочете використовувати mod_perl 2.x з Perl 5.8.1, вам знадобиться mod_perl-1.99_10 або вище.
Попередні версії mod_perl 2.x не працюють із рандомізованими хешами. (mod_perl 1.x
працює добре.) Вам також знадобиться Apache::Test 1.04 або вище.

Багато рідкісних платформ, які працювали на 100% або дуже близько до неї з perl 5.8.0, мають
залишилися трохи недоглянутими, оскільки останнім часом їхні супроводжувачі були зайняті іншим чином,
і тому на цих платформах буде більше збоїв. До таких платформ відноситься Mac
OS Classic, IBM z/OS (та інші платформи EBCDIC) і NetWare. Найпоширеніший Perl
платформи (Unix і Unix-подібні, платформи Microsoft і VMS) мають досить велике тестування і
експертів, що у них все добре.

Зв'язаний хеші in скалярний контекст
Прив’язані хеші наразі не повертають нічого корисного в скалярному контексті, наприклад, коли
використовується як логічні тести:

якщо (%tied_hash) { ... }

Поточна безглузда поведінка завжди повертає false, незалежно від того, чи є
хеш порожній або містить елементи.

Основна причина полягає в тому, що немає інтерфейсу для реалізаторів прив’язаних хешів
реалізувати поведінку хешу в скалярному контексті.

Мережа :: Ping 450_сервіс та 510_ping_udp збої
Субтести 9 і 18 lib/Net/Ping/t/450_service.t і субтест 2
lib/Net/Ping/t/510_ping_udp.t може вийти з ладу, якщо у вас є незвичайні налаштування мережі. Для
Наприклад, в останньому випадку тест намагається надіслати UDP ping на IP-адресу
127.0.0.1.

B::C
Бекенд компілятора, що генерує C, B::C (інтерфейс є "perlcc -c") ще більше
зламаний, ніж раніше, через великі зміни лексичних змінних. (Добре
Новина полягає в тому, що B::Bytecode і ByteLoader кращі, ніж були раніше.)

платформа питома Проблеми


EBCDIC Платформи
IBM z/OS та інші платформи EBCDIC продовжують бути проблемними щодо підтримки Unicode.
Багато тестів Unicode пропускаються, коли вони дійсно повинні бути виправлені.

Cygwin 1.5 проблеми
У Cygwin 1.5 io/розповісти та op/sysio тести дають збої з якоїсь поки невідомої причини.
У версії 1.5.5 тести потоків stress_cv, stress_re і stress_string зазнають невдачі, якщо
Змінна середовища PERLIO має значення "perlio" (що також призводить до збою io/tell
далеко).

Perl 5.8.1 створюється і добре працює з Cygwin 1.3: з (uname -a) "CYGWIN_NT-5.0 ...
1.3.22(0.78/3/2) 2003-03-18 09:20 i686 ..." 100% "зробити тест" було досягнуто за допомогою
"Налаштувати -des -Duseithreads".

HP-UX: HP cc попередження про надсилати файл та sendpath
З певними випусками компілятора HP C (наприклад, B.11.11.02) ви отримаєте багато таких попереджень
(рядки обгорнуті для легшого читання):

cc: "/usr/include/sys/socket.h", рядок 504: попередження 562:
Повторне оголошення "sendfile" з іншим специфікатором класу зберігання:
"sendfile" матиме внутрішнє посилання.
cc: "/usr/include/sys/socket.h", рядок 505: попередження 562:
Повторне оголошення "sendpath" з іншим специфікатором класу зберігання:
"sendpath" матиме внутрішнє зв'язок.

Попередження з'являються як під час складання Perl, так і під час певних тестів lib/ExtUtils
які викликають компілятор C. Однак попередження несерйозне і його можна проігнорувати.

IRIX: t/uni/tr_7jis.t помилково відсутності
Відомо, що тест t/uni/tr_7jis.t повідомляє про збій у розділі "Зробити тест" або тестовий джгут
з деякими випусками IRIX (принаймні IRIX 6.5 і компілятори MIPSpro версії 7.3.1.1m),
але якщо запустити вручну, тест повністю проходить.

Mac OS X: немає використовуватиmymalloc
Malloc Perl ("-Dusemymalloc") взагалі не працює в Mac OS X. Це не те
серйозно, однак, оскільки рідний malloc працює чудово.

Tru64: Немає різьбові Будує з GNU cc (gcc)
В останніх версіях Tru64 (наприклад, v5.1B або пізніших) gcc не можна використовувати для компіляції a
потоковий Perl (-Duseithreads), тому що система " " файл не знає про
gcc.

Win32: сизопен, sysread, syswrite
Починаючи з випуску 5.8.0, sysopen()/sysread()/syswrite() не поводяться так, як раніше
5.6.1 і раніше щодо режиму «текст». Ці вбудовані модулі тепер завжди працюють
«двійковий» режим (навіть якщо sysopen() було передано прапор O_TEXT, або якщо binmode() використовувався на
дескриптор файлу). Зауважте, що ця проблема має впливати лише на дискові файли, як
розетки і труби завжди були в «бінарному» режимі в порту Windows. Як така поведінка
наразі вважається помилкою, сумісна поведінка може бути повторно запроваджена в майбутньому
звільнення. До того часу використання sysopen(), sysread() та syswrite() не підтримується для
операції в «текстовому» режимі.

Future напрями


Наступні речі може бути відбудеться в майбутньому. Перші загальнодоступні релізи мають
ці характеристики будуть випусками розробників Perl 5.9.x, кульмінацією яких стане Perl
Випуск 5.10.0. На даний момент це наші найкращі припущення: ми залишаємо за собою право
переосмислити.

· PerlIO стане стандартним. Наразі (у Perl 5.8.x) бібліотека stdio все ще залишається
використовується, якщо Perl вважає, що може використовувати певні прийоми, щоб запустити stdio насправді швидко. Для
майбутні випуски, наша мета — зробити PerlIO ще швидшим.

· Нова функція під назвою твердження буде доступним. Це означає, що можна мати код
називаються твердженнями, розсипаними в коді: зазвичай вони оптимізовані, але вони можуть
бути увімкненим за допомогою параметра "-A".

· Буде доступний новий оператор "//" (визначений-або). Це означає, що хтось зможе
сказати

$a // $b

замість

визначено $a ? $a : $b

та

$c //= $d;

замість

$c = $d, якщо не визначено $c;

Оператор матиме той самий пріоритет і асоціативність, що й "||". Вихідний код
патч проти джерел Perl 5.8.1 буде доступний у CPAN як
автори/id/H/HM/HMBRAND/dor-5.8.1.diff.

· "unpack()" за замовчуванням буде розпаковувати $_.

· Буде досліджено різні методи копіювання під час запису в надії пришвидшити Perl.

· CPANPLUS, Inline та Module::Build стануть основними модулями.

· Буде введена можливість писати справжні прагми з лексичним обсягом.

· Робота продовжиться над компілятором байт і завантажувачем байтів.

· v-рядки, як вони існують на даний момент, заплановано бути застарілими. Форма v-менш
(1.2.3) стане "об'єктом версії" при використанні з "use", "require" і $VERSION.
$^V також буде "об'єктом версії", тому конструкція printf("%vd",...) більше не буде
бути необхідним. Версія v-ful (v1.2.3) стане застарілою. Еквівалентність
рядки та v-рядки (наприклад, що зараз 5.8.0 дорівнює "\5\8\0") зникнуть.
Там може be немає депресія попередження та цінності v-струни, однак: це досить важко виявити
коли v-рядки використовуються безпечно, а коли ні.

· 5.005 потоків буде видалено

· Змінна $* буде видалена (вона давно не підтримується)

· Псевдохеші будуть видалені

Звітність Помилки


Якщо ви знайдете те, що, на вашу думку, є помилкою, ви можете переглянути статті, нещодавно опубліковані на сайті
comp.lang.perl.misc група новин і база даних помилок perl за адресою http://bugs.perl.org/ . Там
також може бути інформація за адресою http://www.perl.com/ , домашня сторінка Perl.

Якщо ви вважаєте, що у вас є неповідомлена помилка, запустіть perlbug програма в комплекті
ваше звільнення. Обов’язково зменшіть свою помилку до крихітного, але достатнього тестового випадку. Ваша помилка
звіт разом із виводом "perl -V" буде надіслано до [захищено електронною поштою] бути
проаналізовано командою з перенесення Perl. Ви можете переглядати та шукати помилки Perl 5 за адресою
http://bugs.perl.org/

Використовуйте perl581delta онлайн за допомогою служб onworks.net


Безкоштовні сервери та робочі станції

Завантажте програми для Windows і Linux

  • 1
    Менеджер PAC
    Менеджер PAC
    PAC є заміною Perl/GTK
    SecureCRT/Putty/і т.д. (linux
    ssh/telnet/... gui)... Він надає графічний інтерфейс
    для налаштування підключень: користувачі,
    паролі, EXPECT regula...
    Завантажити PAC Manager
  • 2
    GeoServer
    GeoServer
    GeoServer — це програмне забезпечення з відкритим кодом
    сервер, написаний на Java, що дозволяє користувачам
    для обміну та редагування геопросторових даних.
    Створений для сумісності, він
    публікує да...
    Завантажити GeoServer
  • 3
    Світлячок III
    Світлячок III
    Безкоштовна особиста фінансова система з відкритим кодом
    менеджер. Firefly III має a
    система подвійної бухгалтерії. Ти можеш
    швидко введіть і організуйте свій
    операції я...
    Завантажити Firefly III
  • 4
    Розширення Apache OpenOffice
    Розширення Apache OpenOffice
    Офіційний каталог Apache
    Розширення OpenOffice. Ви знайдете
    розширення від словників до
    інструменти для імпорту файлів PDF та підключення
    з доп...
    Завантажте розширення Apache OpenOffice
  • 5
    MantisBT
    MantisBT
    Mantis — це мережа, яка легко розгортається
    базований багтрекер, щоб допомогти продукту
    відстеження. Для цього потрібні PHP, MySQL і a
    веб-сервер. Ознайомтеся з нашою демонстрацією та розміщеною
    пропоную...
    Завантажити MantisBT
  • 6
    LAN Messenger
    LAN Messenger
    LAN Messenger — це програма для чату p2p
    для інтранет-зв'язку і ні
    потрібен сервер. Різноманітність підручних
    функції підтримуються в тому числі
    сповіщення ...
    Завантажте LAN Messenger
  • Детальніше »

Команди Linux

  • 1
    abidw
    abidw
    abidw - серіалізує ABI ELF
    файл abidw читає спільну бібліотеку в ELF
    форматує та створює представлення XML
    свого ABI до стандартного виводу. The
    випущений ...
    Запустіть abidw
  • 2
    здатний
    здатний
    abilint - перевірити abigail ABI
    представлення abilint аналізує рідний
    XML-представлення ABI у випущеному вигляді
    від abidw. Після аналізу XML
    представляє ...
    Запустіть abilint
  • 3
    coresendmsg
    coresendmsg
    coresendmsg - відправити повідомлення CORE API
    до глибини душі-демон демон ...
    Запустіть coresendmsg
  • 4
    core_server
    core_server
    core_server - основний сервер для
    SpamBayes. ОПИС: В даний час служить
    лише веб-інтерфейс. Підключення до мережі
    прослуховувачів для різних протоколів уточнюється.
    Це ...
    Запустіть core_server
  • 5
    fwflash
    fwflash
    fwflash - програма для прошивки файлу зображення
    до підключеного пристрою NXT...
    Запустіть fwflash
  • 6
    fwts-collect
    fwts-collect
    fwts-collect - збирати журнали для fwts
    повідомлення про помилку. ...
    Запустіть fwts-collect
  • Детальніше »

Ad