Це команда perl5005delta, яку можна запустити в постачальнику безкоштовного хостингу OnWorks за допомогою однієї з наших численних безкоштовних робочих станцій, таких як Ubuntu Online, Fedora Online, онлайн емулятор Windows або онлайн емулятор MAC OS
ПРОГРАМА:
ІМ'Я
perl5005delta - що нового для perl5.005
ОПИС
Цей документ описує відмінності між версією 5.004 і цією.
Про нас new Версію система
Тепер Perl розробляється за двома напрямками: трек обслуговування, який виконує невеликі безпечні оновлення
випущені серійні версії з акцентом на сумісність; і шлях розвитку
переслідує більш агресивну еволюцію. Релізи обслуговування (які слід враховувати
якість виробництва) мають номери підривної дії від 1 до 49 і розробку
випуски (які слід вважати «альфа-якістю») мають діапазон від 50 до 99.
Perl 5.005 є комбінованим продуктом нової двоканальної схеми розробки.
Несумісний Зміни
ПОПЕРЕДЖЕННЯ: Цей довідник - версія is НЕ двійковий сумісний з Perl 5.004.
Починаючи з Perl 5.004_50 було багато глибоких і далекосяжних змін у мові
внутрішні органи. Якщо у вас є динамічно завантажені розширення, створені під perl 5.003 або
5.004, ви можете продовжувати використовувати їх із 5.004, але вам потрібно буде перезбирати та перевстановлювати
ці розширення для їх використання 5.005. Побачити ВСТАНОВИТИ для отримання детальних інструкцій щодо того, як
оновлення
дефолт установка структура має змінилися
Нові параметри Configure за замовчуванням створені для плавного оновлення з 5.004 до 5.005, але
ти повинен прочитати ВСТАНОВИТИ для детального обговорення змін з метою їх адаптації
ваша система.
Perl Source Сумісність
Якщо жодна з експериментальних функцій не ввімкнена, користувачам має бути дуже мало видимих
Проблеми сумісності вихідного коду Perl.
Якщо потоки ввімкнено, застосовуються деякі застереження. @_ і $_ стають лексичними змінними. The
ефект від цього має бути здебільшого прозорим для користувача, але є певні межі
умови, за яких користувач повинен знати про проблеми. Наприклад, "локальний(@_)"
призводить до повідомлення "Не вдається локалізувати лексичну змінну @_ ...". Це може бути включено в a
майбутня версія.
Було введено кілька нових ключових слів. Очікується, що їх, як правило, буде дуже мало
вплив на сумісність. Див. «Нове ключове слово «INIT», «Нове ключове слово «lock»» і «Нове «qr//»
оператор».
Деякі простих слів тепер зарезервовано. Їх використання викличе попередження, якщо ви запитали
для них з перемикачем "-w". Див. ""наш" тепер є зарезервованим словом".
C Source Сумісність
Для підтримки нових функцій було внесено багато змін у внутрішні елементи
цей випуск.
· Основні джерела тепер потребують компілятора ANSI C
Зараз є компілятор ANSI C вимагається для створення perl. Побачити ВСТАНОВИТИ.
· Усі глобальні змінні Perl тепер повинні мати посилання з явним префіксом
Усі глобальні змінні Perl, видимі для використання розширеннями, тепер мають "PL_"
префікс. Нові розширення «не повинні» посилатися на глобальні perl за їхніми некваліфікованими назвами.
Щоб зберегти розумність, ми надаємо обмежену зворотну сумісність для глобальних елементів, які є
широко використовується як "sv_undef" і "na" (який тепер слід писати як
"PL_sv_undef", "PL_na" тощо)
Якщо ви виявите, що ваше розширення XS більше не компілюється через глобальний perl
не видно, спробуйте додати префікс "PL_" до глобала та перебудуйте.
Настійно рекомендується використовувати всі функції Perl API, які не починаються з
на "perl" посилатися з префіксом "Perl_". Голі назви функцій без
Префікс "Perl_" підтримується макросами, але ця підтримка може припинитися в майбутньому
звільнення.
См. перлапи.
· Увімкнення потоків має проблеми з сумісністю джерела
Perl, створений із увімкненою потоковою обробкою, потребує розширень для використання нового макросу "dTHR".
ініціалізувати дескриптор для доступу до даних кожного потоку. Якщо ви бачите помилку компілятора, що
говорить про те, що змінна "thr" не оголошена (під час створення модуля, який має XS
код), потрібно додати "dTHR;" на початку блоку, який викликав помилку.
Функцію API "perl_get_sv("@",GV_ADD)" слід використовувати замість безпосередньо
доступ до perl globals як "GvSV(errgv)". Виклик API зворотно сумісний із
наявні perls і забезпечує сумісність джерела з увімкненою потоковою обробкою.
Додаткову інформацію див. у розділі «Сумісність джерел C».
двійковий Сумісність
Ця версія НЕ бінарно сумісна зі старими версіями. Всі розширення повинні бути
перекомпільований. Подальші двійкові файли, створені з увімкненими потоками, несумісні з двійковими файлами
побудований без. Це має бути здебільшого прозорим для користувача, оскільки всі двійкові файли несумісні
конфігурації мають власну унікальну назву архітектури, а двійкові файли розширення отримують
встановлені в унікальних місцях. Це дозволяє співіснувати декілька конфігурацій у
однакова ієрархія каталогів. Побачити ВСТАНОВИТИ.
Безпека фіксований може впливати сумісність
Було виправлено кілька витоків і упущень. Це може призвести до «виходу з ладу».
скрипти, які раніше працювали зі старими версіями. Компіляція з -DINCOMPLETE_TAINTS
надає perl з мінімальною кількістю змін у поведінці псування. Але зауважте, що
отриманий perl матиме відомі небезпеки.
Oneliners із перемикачем «-e» більше не створюють тимчасові файли.
Невимушена new обов'язковий попередження введені in 5.004
Багато нових попереджень, які були представлені в 5.004, стали необов’язковими. Деякі з них
попередження все ще присутні, але нові функції perl роблять їх рідше проблемою. Побачити
«Нова діагностика».
ліцензування
Perl має новий соціальний договір для учасників. Побачити Перенесення/контракт.
Ліцензія, включена в більшу частину документації Perl, була змінена. Більшість Perl
документація раніше перебувала під умовною ліцензією GNU General Public License або Artistic
Ліцензія (на вибір користувача). Тепер велика частина документації однозначно вказує на
умови, на яких він може бути розповсюджений. Загалом ці терміни набагато менш обмежувальні
ніж GNU GPL. Перегляньте perl та окремі perl-сторінки довідки, перелічені там.
Core Зміни
Threads
ПОПЕРЕДЖЕННЯ. Потокове використання вважається експериментальний функція. Деталі виконання
може змінюватися без попередження. Є відомі обмеження та деякі помилки. Це очікується
буде виправлено в наступних версіях.
Читати README.threads.
компілятор
ПОПЕРЕДЖЕННЯ: Компілятор і пов’язані інструменти розглядаються експериментальний. Функції можуть змінюватися
без попередження, і є відомі обмеження та помилки. Так як компілятор повністю
зовнішнього для perl, конфігурація за замовчуванням створить і встановить його.
Компілятор створює три різні типи перетворень програми на perl. C
бекенд генерує код C, який фіксує стан perl безпосередньо перед початком виконання. Це
усуває накладні витрати під час компіляції звичайного інтерпретатора perl, але час виконання
продуктивність залишається відносно незмінною. Сервер CC генерує оптимізований код C
еквівалентний шляху коду під час виконання. Сервер CC має більший потенціал для великих
оптимізації, але наразі реалізовано лише кілька оптимізацій. Байт-код
бекенд генерує незалежне від платформи представлення байт-коду інтерпретатора
стан безпосередньо перед виконанням. Таким чином, серверна частина байт-коду також усуває велику частину
витрати на компіляцію інтерпретатора.
Компілятор поставляється з кількома цінними утилітами.
«B::Lint» — це експериментальний модуль для виявлення підозрілого коду та попередження про нього
випадки, які перемикач "-w" не визначає.
«B::Deparse» можна використати, щоб демістифікувати код perl і зрозуміти, як perl оптимізує певні
конструкти.
"B::Xref" створює звіти про перехресні посилання щодо всіх визначень і використання змінних,
підпрограми та формати в програмі.
"B::Showlex" коротко показує лексичні змінні, які використовуються підпрограмою або файлом.
"perlcc" - це простий інтерфейс для компіляції perl.
Перегляньте "ext/B/README", B та відповідні модулі компілятора.
регулярний Вирази
Механізм регулярних виразів Perl був серйозно перероблений, і з’явилося багато нових конструкцій
підтримуються. Було виправлено декілька помилок.
Ось деталізований підсумок:
Багато нових і покращених оптимізацій
Зміни в двигуні RE:
Видалені непотрібні вузли;
Підрядки об'єднані разом;
Нові типи вузлів для обробки (SUBEXPR)* і подібні вирази
швидко, використовується, якщо SUBEXPR не має побічних ефектів і відповідає
струни однакової довжини;
Краща оптимізація шляхом пошуку постійних підрядків;
Кращий пошук константних підрядків, закріплених $;
Зміни в коді Perl за допомогою механізму RE:
Більше оптимізацій для s/довшого/короткого/;
study() не працював;
/blah/ може бути оптимізовано до аналога index(), якщо $& $` $' не видно;
Видалено непотрібне копіювання рядка зіставлення;
Копіюється лише зібрана частина рядка, якщо $` $' не видно;
Багато виправлення помилок
Зауважте, що тут наведено лише основні виправлення помилок. Побачити Зміни для інших.
Зворотне відстеження може не відновити початок $3.
Немає відгуків, якщо максимальна кількість * або + у «складному» підвиразі
було досягнуто аналогічно (але під час компіляції) для {3,34567}
Примітивні обмеження максимальної кількості введено для зменшення a
можливість виникнення сегментної несправності;
(ZERO-LENGTH)* може відбутися segfault;
(ZERO-LENGTH)* було заборонено;
Довгі RE не допускалися;
/RE/g може пропускати збіги на тій же позиції після a
відповідність нульової довжини;
Нові конструкції регулярного виразу
Підтримуються наступні нові елементи синтаксису:
(?<=RE)
(?
(?{ КОД })
(?ix)
(?i:RE)
(?(COND)YES_RE|NO_RE)
(?>RE)
\z
Новий оператор для попередньо скомпільованих регулярних виразів
Див. «Новий оператор «qr//».
Інші поліпшення
Кращий вихід налагодження (можливо, з кольорами),
навіть з Perl без налагодження;
Код двигуна RE тепер виглядає як C, а не як асемблер;
Поведінка RE, що змінюється директивою `use re';
Покращена документація;
Набір тестів значно розширено;
Синтаксис [:^upper:] тощо, зарезервований у класах символів;
Несумісні зміни
(?i) локалізовані всередині охоплюючої групи;
$( більше не інтерполюється в RE;
/RE/g може збігатися в одній позиції (з ненульовою довжиною)
після збігу нульової довжини (виправлено помилку).
Дивіться perlre і perlop.
Покращений malloc ()
Дивіться банер на початку "malloc.c" для деталей.
Квікорт is внутрішньо реалізовані
Perl тепер містить власний високооптимізований qsort() рутина. Новий qsort() стійкий
до непослідовних функцій порівняння, тому "sort()" Perl не спровокує будь-які дампи ядра
більше, якщо надано погано написані підпрограми сортування. (Деякі бібліотеки C "qsort()", які були
використовувався раніше, щоб мати цю проблему.) У нашому тестуванні потрібен новий "qsort()".
мінімальна кількість парних порівнянь у середньому серед усіх відомих "qsort()"
реалізації.
Дивіться "perlfunc/sort".
Надійний сигнали
Обробка сигналів Perl чутлива до випадкових збоїв, оскільки сигнали надходять
асинхронно, і середовище виконання Perl не є повторним входом у довільний час.
Однак одна експериментальна реалізація надійних сигналів доступна, коли є потоки
включено. Див. «Thread::Signal». Також див ВСТАНОВИТИ для того, як створити Perl, здатний
нитки.
Надійний стек pointers
Внутрішні компоненти тепер перерозподіляють стек perl лише в передбачуваний час. Зокрема,
чарівні виклики ніколи не викликають перерозподілу стека, оскільки всі повторні входи в
час виконання обробляється за допомогою "стосу стеків". Це має підвищити надійність кешу
покажчики стека у внутрішніх елементах і в XSUB.
більше щедрий лікування of перевезення Умови повернення
Раніше Perl скаржився, якщо стикався з буквальним поверненням каретки в сценаріях. Тепер вони є
здебільшого розглядаються як пробіли в тексті програми. Всередині рядкових літералів і тут
документів, літеральні повернення каретки ігноруються, якщо вони виникають у парі з переводом рядка, або
інтерпретуються як пробіли, якщо вони стоять окремо. Така поведінка означає, що буквально
слід уникати повернення каретки у файлах. Ви можете отримати старше, більш сумісне (але
менш щедрою) поведінкою, визначаючи символ препроцесора "PERL_STRICT_CR" під час побудови
perl. Звісно, все це не має жодного відношення до того, як є екранування типу "\r".
обробляється в межах рядків.
Зауважте, що це якимось магічним чином не дозволяє зберігати всі текстові файли у форматі DOS.
Щедрий режим застосовується лише до файлів, які сам perl аналізує. Якщо ваш компілятор C
не дозволяє повернення каретки у файлах, можливо, ви все одно не зможете створювати модулі, які
потрібен компілятор C.
пам'ять витоку
"substr", "pos" і "vec" більше не пропускають пам'ять, коли використовуються в контексті lvalue. багато
невеликі витоки, які впливали на програми, які вбудовують кілька інтерпретаторів, виправлено.
Краще підтримкою та цінності множинний перекладачів
Параметр часу збірки "-DMULTIPLICITY" переробив багато деталей. Дещо
Раніше глобальні змінні, які мали бути для кожного інтерпретатора, тепер є. З турботою,
це дозволяє перекладачам телефонувати один одному. Перегляньте розширення "PerlInterp" на CPAN.
Поведінка of локальний() on масив та мішанина елементи is зараз добре визначений
Див. «Тимчасові значення через локальний()" в perlsub.
"%!" is прозоро прив'язаний до Errno Модулі
Дивіться perlvar і Errno.
Псевдо-хеші він має підтриманий
Перегляньте perlref.
"EXPR для кожного EXPR" is підтриманий
Дивіться perlsyn.
Ключові слова може be глобально переосмислений
Дивіться perlsub.
$^E is значущим on Win32
Дивіться perlvar.
"для кожного (1..1000000)" оптимізований
"foreach (1..1000000)" тепер оптимізовано до циклу підрахунку. Його не намагаються виділити
список розміром 1000000 більше.
"Фу::" може be використовуваний as неявно цитується пакет ім'я
Barewords викликав неінтуїтивну поведінку підпрограми з такою ж назвою, як і пакет
трапилося визначити. Таким чином, "нові @args Foo", використовуйте результат виклику "Foo()"
замість того, щоб "Foo" розглядався як літерал. Рекомендований спосіб написання голих слів
слот непрямого об’єкта – «новий Foo:: @args». Зверніть увагу, що викликається метод "new()".
з першим аргументом "Фу", а не "Фу::", коли ви це робите.
"існує $Foo::{Bar::}" Тести існування of a пакет
Неможливо було перевірити існування пакета без його фактичного створення
раніше. Тепер «exists $Foo::{Bar::}» можна використати, щоб перевірити, чи простір імен «Foo::Bar» має
було створено.
Краще місце дії підтримкою
Перегляньте perllocale.
Експериментальна підтримкою та цінності 64-біт Платформи
Perl5 завжди підтримував 64-розрядну систему в системах із 64-розрядною довжиною. Починаючи з 5.005,
початок експериментальної підтримки для систем з 32-bit long і 64-bit 'long long'
додано цілих чисел. Якщо ви додасте -DUSE_LONG_LONG до ваших ccflags у config.sh (або
вручну визначте його в perl.h), тоді perl буде зібрано з підтримкою «long long». Там
буде багато попереджень компілятора, і результуючий perl може працювати не на всіх системах. там
багато інших проблем, пов’язаних зі сторонніми розширеннями та бібліотеками. Цей варіант існує
дозволити людям працювати над цими питаннями.
прототип() Умови повернення корисний результати on вбудовані
Дивіться "прототип" у perlfunc.
Розширений підтримкою та цінності виняток обробка
"die()" тепер приймає довідкове значення, і $@ отримує це значення в пастках винятків.
Це робить можливим поширення об’єктів винятків. Це без документів
експериментальний функцію.
Повторне благословення in ЗНИЩИТИ() підтриманий та цінності прикування ЗНИЩИТИ() методика
Див. «Деструктори» в perlobj.
ВСІ "printf" формат конверсій він має обробляються внутрішньо
Дивіться "printf" у perlfunc.
Нові "В ЦЬОМУ" ключове слово
Підрозділи "INIT" схожі на "BEGIN" і "END", але вони запускаються безпосередньо перед часом виконання perl
починає виконання. наприклад, компілятор Perl використовує блоки "INIT" для ініціалізації та
розв’язувати покажчики на XSUB.
Нові "замок" ключове слово
Ключове слово "lock" є основним примітивом синхронізації в потоковому perl. Коли
потоки не ввімкнено, наразі це noop.
Щоб мінімізувати вплив на сумісність джерела, це ключове слово є "слабким", тобто будь-яким, визначеним користувачем
однойменна підпрограма замінює його, якщо не було помічено «використання потоку».
Нові "qr//" оператор
Оператор "qr//", який синтаксично подібний до інших операторів, схожих на лапки,
використовується для створення попередньо скомпільованих регулярних виразів. Ця скомпільована форма тепер може бути явною
передається в змінних і інтерполюється в інших регулярних виразах. Див.
"наш" is зараз a захищені слово
Виклик підпрограми з назвою "our" тепер викличе попередження під час використання "-w"
перемикач.
Зв'язаний масиви він має зараз повністю підтриманий
Перегляньте Tie::Array.
Зв'язаний ручки підтримкою is краще
Додано кілька відсутніх гаків. Існує також новий базовий клас для TIEARRAY
реалізації. Перегляньте Tie::Array.
4th аргумент до субстр
substr () тепер можна повернути та замінити за одну операцію. Необов’язковий 4-й аргумент
рядок заміни. Дивіться "substr" у perlfunc.
Негативний ДОВЖИНА аргумент до сплайсинг
зрощення () з від’ємним аргументом LENGTH тепер працює подібно до того, для чого робив LENGTH
substr (). Раніше від’ємне значення LENGTH розглядалося як 0. Дивіться «з’єднання» в perlfunc.
магія значення він має зараз більше магічний
Коли ви говорите щось на зразок "substr($x, 5) = "hi"", скаляр повертається substr () is
особливий, оскільки будь-які його зміни впливають на $x. (Це називається «магічним значенням»
тому що 'lvalue' - це щось ліворуч від призначення.) Зазвичай це так
саме те, що ви очікуєте, але Perl використовує ту саму магію, якщо ви використовуєте substr (),
pos()або vec() у контексті, де вони можуть бути змінені, наприклад, взяти посилання
"\" або як аргумент для sub, що змінює @_. У попередніх версіях лише ця «магія».
пішов одним шляхом, але тепер змінюється на скаляр, на який посилається магія ($x у наведеному вище прикладі)
також впливають на магічне значення. Наприклад, цей код тепер діє інакше:
$x = "привіт";
sub printit {
$x = "до побачення";
надрукувати $_[0], "\n";
}
printit(substr($x, 0, 5));
У попередніх версіях це друкувало "hello", але тепер друкує "g'bye".
<> зараз читає in облік
Якщо $/ є посиланням на ціле число або скаляр, який містить ціле число, <> читатиметься в
записи замість рядків. Для отримання додаткової інформації дивіться "$/" у perlvar.
Підтриманий Платформи
Configure містить багато додаткових покращень. Загальна політика сайту для створення perl може тепер
зробити постійним за допомогою Policy.sh. Configure також записує використані аргументи командного рядка
in config.sh.
Нові Платформи
BeOS тепер підтримується. Побачити README.beos.
DOS тепер підтримується інструментами DJGPP. Побачити README.dos (встановлюється як perldos на деяких
системи).
Тепер MiNT підтримується. Побачити README.mint.
Тепер підтримується MPE/iX. Перегляньте README.mpeix.
Тепер підтримується MVS (він же OS390, він же Open Edition). Побачити README.os390 (встановлено як
perlos390 на деяких системах).
Stratus VOS тепер підтримується. Побачити README.vos.
Зміни in існуючий підтримкою
Підтримка Win32 була значно покращена. Підтримка Perl Object, інкапсуляція C++
Perl. GCC і EGCS тепер підтримуються в Win32. Побачити README.win32, він же perlwin32.
Система конфігурації VMS була переписана. Побачити README.vms (встановлено як README_vms on
деякі системи).
Файли підказок для більшості платформ Unix зазнали поступових покращень.
Модулі та Прагмата
Нові Модулі
B Компілятор і інструменти Perl. Дивіться B.
Дані :: Самоскид
Модуль для гарного друку даних Perl. Перегляньте Data::Dumper.
Думпвале
Модуль для виведення значень perl на екран. Дивіться Dumpvalue.
Errno
Модуль для більш зручного пошуку помилок. Дивіться Errno.
Файл :: Специфікація
Портативний API для операцій з файлами.
ExtUtils::Встановлено
Запитуйте та керуйте встановленими модулями.
ExtUtils :: Список пакунків
Маніпулювати файлами .packlist.
Фатальний
Зробіть функції/вбудовані успішними або загинуть.
IPC::SysV
Константи та інша допоміжна інфраструктура для операцій System V IPC у perl.
Перевірити
Фреймворк для написання наборів тестів.
Tie::Array
Базовий клас для зв'язаних масивів.
Зав'язка::Ручка
Базовий клас для зв'язаних ручок.
Нитка
Створення потоку Perl, маніпулювання та підтримка.
атрибути
Встановити атрибути підпрограми.
поля
Поля класу під час компіляції.
re Різні прагмати для керування поведінкою регулярних виразів.
Зміни in існуючий Модулі
еталонний тест
Тепер ви можете запускати тести для x секунд замість того, щоб вгадати потрібну кількість тестів
бігти.
Краще тримає час.
Карп
У коропа з'явилася нова функція кудахтати(). кудахтати() попереджає, подобається короп(), але також додає стек
зворотний шлях до повідомлення про помилку, наприклад зізнатися().
CGI CGI оновлено до версії 2.42.
Fcntl
Додано більше констант Fcntl: F_SETLK64, F_SETLKW64, O_LARGEFILE для великих (більш ніж
4G) доступ до файлів (проте підтримка 64-розрядної версії ще не працює, тому отримувати її не потрібно
надмірно схвильований), позначки поведінки блокування Free/Net/OpenBSD F_FLOCK, F_POSIX, Linux
F_SHLCK і O_ACCMODE: маска O_RDONLY, O_WRONLY і O_RDWR.
Математика::Складна
Методи доступу Re, Im, arg, abs, rho, theta, методи можуть ($z->Re()) тепер також
діють як мутатори ($z->Re(3)).
Математика::Тріг
Додано трохи радіальної тригонометрії (циліндричної та сферичної), наприклад
велика відстань кола.
POSIX
У POSIX тепер є власні файли підказок для певної платформи.
DB_File
DB_File підтримує версію 2.x Berkeley DB. Перегляньте "ext/DB_File/Changes".
MakeMaker
MakeMaker тепер підтримує створення порожніх make-файлів, надає можливість вказати цей сайт
umask() політику слід шанувати. Також є краща підтримка маніпуляцій
файли .packlist та отримання інформації про встановлені модулі.
Розширення, які мають як залежні від архітектури, так і незалежні від архітектури файли
тепер завжди повністю встановлюються в місцях, що залежать від архітектури.
Раніше доступні для спільного використання частини були спільними для різних архітектур і perl
версій і, отже, могли бути перезаписані новішими версіями, які могли б
мають тонку несумісність.
CPAN
Перегляньте perlmodinstall і CPAN.
Cwd Cwd::cwd працює швидше на більшості платформ.
Утиліта Зміни
"h2ph" і пов'язані утиліти були суттєво перероблені.
"perlcc", доступний новий експериментальний інтерфейс для компілятора.
Грубий емулятор "configure" GNU тепер називається "configure.gnu", щоб уникнути витоптування
«Налаштувати» під файлові системи без урахування регістру.
"perldoc" раніше був досить повільним. Повільніші функції тепер необов’язкові. Зокрема,
Для пошуку без урахування регістру потрібен перемикач "-i", а для рекурсивного пошуку - "-r". Ти можеш
встановіть ці перемикачі в змінній середовища "PERLDOC", щоб отримати стару поведінку.
документація Зміни
У Config.pm тепер є глосарій змінних.
Перенесення/виправлення.pod містить докладні інструкції щодо створення та надсилання виправлень для
perl.
perlport визначає вказівки щодо того, як писати портативно.
perlmodinstall описує, як отримати та встановити модулі з сайтів "CPAN".
Зараз задокументовано ще деякі пастки Perl. Див. perltrap.
perlopentut дає підручник із використання відчинено().
perlreftut надає підручник щодо посилань.
perlthrtut дає підручник з потоків.
Нові Діагностика
Неоднозначний виклик вирішено як CORE::%s(), кваліфікуйте як такий або використовуйте &
(W) Підпрограма, яку ви оголосили, має таку саму назву, як і ключове слово Perl, і ви її маєте
використовував ім'я без пояснення для того, щоб назвати те чи інше. Perl вирішив
викликати вбудовану, оскільки підпрограма не імпортована.
Щоб примусово інтерпретувати як виклик підпрограми, поставте амперсанд перед символом
ім'я підпрограми, або кваліфікуйте ім'я з її пакетом. Крім того, ви можете імпортувати
підпрограму (або зробити вигляд, що вона імпортована за допомогою прагми "use subs").
Щоб мовчки інтерпретувати його як оператор Perl, використовуйте в операторі префікс «CORE::».
(наприклад, "CORE::log($x)") або шляхом оголошення підпрограми як об'єктного методу (див.
"attrs").
Неправильний індекс під час приведення масиву до хешу
(F) Індекс, знайдений у хеші, знайдений як 0-й елемент псевдогешу, не
правовий. Значення індексу мають бути 1 або більше. Перегляньте perlref.
Голе слово "%s" відноситься до неіснуючого пакета
(W) Ви використовували кваліфіковане головне слово у формі "Foo::", але компілятор не побачив іншого
використання простору імен перед цією точкою. Можливо, вам потрібно попередньо задекларувати пакет?
Не вдається викликати метод "%s" для невизначеного значення
(F) Ви використовували синтаксис виклику методу, але слот заповнений посиланням на об'єкт
або ім'я пакета містить невизначене значення. Щось подібне буде відтворювати
помилка:
$BADREF = 42;
процес $BADREF 1,2,3;
$BADREF->process(1,2,3);
Не вдається перевірити файлову систему сценарію "%s" на наявність nosuid
(P) З якоїсь причини ви не можете перевірити файлову систему сценарію на наявність nosuid.
Неможливо перетворити масив на хеш
(F) Ви використали масив, де очікувався хеш, але в масиві немає інформації
як зіставити ключі з індексами масиву. Ви можете зробити це лише з масивами, які мають a
посилання на хеш з індексом 0.
Неможливо перейти до підпрограми з рядка оцінки
(F) Виклик "підпрограми goto" не можна використовувати для виходу з "рядка" eval. (Ви
можна використати його, щоб вискочити з eval {BLOCK}, але ви, ймовірно, цього не захочете.)
Не вдається локалізувати псевдохеш-елемент
(F) Ви сказали щось на зразок "local $ar->{'key'}", де $ar є посиланням на
псевдохеш. Це ще не реалізовано, але ви можете отримати подібний ефект
безпосередньо локалізуючи відповідний елемент масиву: "local $ar->[$ar->[0]{'key'}]".
Неможливо використати %%! оскільки Errno.pm недоступний
(F) Перший раз %! використовується хеш, perl автоматично завантажує модуль Errno.pm.
Очікується, що модуль Errno вирівняє %! хеш для надання символічних імен для $! помилково
значень.
Не вдається знайти номер операції для "%s"
(F) Надано рядок форми "CORE::word". прототип(), але вбудованого немає
з назвою «слово».
Синтаксис класу символів [. .] зарезервовано для майбутніх розширень
(W) У класах символів регулярних виразів ([]) синтаксис починається з "[."
і закінчується на ".]" зарезервовано для майбутніх розширень. Якщо вам потрібно представляти
ці послідовності символів всередині класу символів регулярного виразу, просто введіть в лапки
квадратні дужки зі зворотною скісною рискою: "\[." і ".\]".
Синтаксис класу символів [: :] зарезервовано для майбутніх розширень
(W) У класах символів регулярного виразу ([]) синтаксис починається з "[:"
і закінчується на ":]" зарезервовано для майбутніх розширень. Якщо вам потрібно представляти
ці послідовності символів всередині класу символів регулярного виразу, просто введіть в лапки
квадратні дужки із зворотною косою рискою: "\[:" і ":\]".
Синтаксис класу символів [= =] зарезервовано для майбутніх розширень
(W) У класах символів регулярних виразів ([]) синтаксис починається з "[="
і закінчується на "=]" зарезервовано для майбутніх розширень. Якщо вам потрібно представляти
ці послідовності символів всередині класу символів регулярного виразу, просто введіть в лапки
квадратні дужки зі зворотною похилою рискою: "\[=" і "=\]".
%s: група Eval у незахищеному регулярному виразі
(F) Perl виявив зіпсовані дані, коли намагався скомпілювати регулярний вираз
містить твердження нульової ширини "(?{ ... })", яке небезпечно. Див. "(?{ код })" в
perlre і perlsec.
%s: група Eval не дозволена, використовуйте re 'eval'
(F) Регулярний вираз містив твердження нульової ширини "(?{ ... })", але
конструкція дозволена лише тоді, коли діє прагма "use re 'eval'". Дивіться "(?{ код
})" у perlre.
%s: група Eval не дозволена під час виконання
(F) Perl спробував скомпілювати регулярний вираз, що містить "(?{ ... })" нульової ширини.
твердження під час виконання, як це було б, коли шаблон містить інтерпольовані значення.
Оскільки це загрожує безпеці, це заборонено. Якщо ви наполягаєте, ви все ще можете зробити
це шляхом явного створення шаблону з інтерпольованого рядка під час виконання та
використовуючи це в an eval (). Перегляньте "(?{ код })" у perlre.
Явне благословення на '' (припускаючи основний пакет)
(W) Ви благословляєте посилання на рядок нульової довжини. Це має ефект
благословення посилання в пакет main. Зазвичай це не те, чого ви хочете.
Розгляньте можливість надання цільового пакету за замовчуванням, наприклад bless($ref, $p || 'MyPackage');
Неприпустима шістнадцяткова цифра проігнорована
(W) Можливо, ви намагалися використати символ, відмінний від 0 - 9 або A - F у шістнадцятковому
номер. Інтерпретація шістнадцяткового числа зупинилася перед незаконним
характер.
Немає такого поля масиву
(F) Ви намагалися отримати доступ до масиву як хешу, але використане ім’я поля не визначено.
Хеш з індексом 0 має зіставляти всі дійсні назви полів з індексами масивів для цього
працювати.
Немає такого поля "%s" у змінній %s типу %s
(F) Ви намагалися отримати доступ до поля типізованої змінної, про яке тип не знає
назву поля. Назви полів шукаються в хеші %FIELDS у пакеті типів
під час компіляції. Хеш %FIELDS зазвичай налаштовується за допомогою прагми "fields".
Недолік пам’яті під час смішно великого запиту
(F) Ви не можете виділити більше 2^31+ "малої кількості" байтів. Ця помилка найбільш ймовірна
може бути викликано помилкою в програмі Perl. наприклад, $arr[time] замість $arr[$time].
Ітератор діапазону за межами цілого діапазону
(F) Один (або обидва) числові аргументи оператора діапазону ".." знаходяться за межами
діапазон, який внутрішньо може бути представлений цілими числами. Одним з можливих обхідних шляхів є
змусити Perl використовувати магічне збільшення рядка, додавши «0» до ваших чисел.
Під час пошуку методу «%s» %s виявлено рекурсивне успадкування
(F) Під час виклику методу було виявлено більше 100 рівнів успадкування.
Ймовірно, це вказує на ненавмисне зациклення у вашій ієрархії успадкування.
Посилання знайдено там, де очікується список парного розміру
(W) Ви дали одне посилання, де Perl очікував список із парною кількістю
елементів (для присвоєння хешу). Зазвичай це означає, що ви використовували анон хеш
конструктор, коли ви мали на увазі використання дужок. У будь-якому випадку для хешу потрібен ключ/значення
пар.
%hash = { один => 1, два => 2, }; # НЕПРАВИЛЬНО
%hash = [ qw/ аноновий масив / ]; # НЕПРАВИЛЬНО
%хеш = (один => 1, два => 2, ); # правильно
%hash = qw(один 1 два 2); # теж добре
Типу глобу присвоєно невизначене значення
(W) Невизначене значення було призначено typeglob, a la "*foo = undef". Це робить
нічого. Цілком можливо, що ви дійсно маєте на увазі "undef *foo".
Використання зарезервованого слова "%s" застаріло
(D) Зазначене голе слово є зарезервованим словом. Майбутні версії perl можуть використовувати його як
ключове слово, тому вам краще або явно процитувати це слово таким чином
відповідно до контексту використання, або використовуючи зовсім іншу назву. Попередження
можна придушити для назв підпрограм, додавши префікс "&" або використовуючи a
кваліфікатор пакета, наприклад, "&our()" або "Foo::our()".
perl: попередження: Не вдалося встановити локаль.
(S) Усе попередження буде виглядати приблизно так:
perl: попередження: Не вдалося встановити локаль.
perl: попередження: Будь ласка, перевірте, чи ваші налаштування мови:
LC_ALL = "En_US",
LANG = (не встановлено)
підтримуються та встановлені у вашій системі.
perl: попередження: повернення до стандартної мови ("C").
Які саме параметри невдалих мовних стандартів відрізняються. У вищезазначених налаштуваннях були
що LC_ALL був "En_US", а LANG не мав значення. Ця помилка означає, що Perl
виявлено, що ви та/або ваш системний адміністратор налаштували так звану змінну
система, але Perl не міг використати ці налаштування. На щастя, це було не зовсім серйозно:
існує "мовна настройка" під назвою "C", яку Perl може і буде використовувати, сценарій буде
бігти. Однак перш ніж ви справді вирішите проблему, ви отримаєте те саме повідомлення про помилку
кожного разу, коли ви запускаєте Perl. Як справді вирішити проблему, можна знайти в «LOCALE
ПРОБЛЕМИ" в perllocale.
Застарілий Діагностика
Не можу mktemp()
(F) mktemp() під час спроби обробити a -e перемикач.
Може, твій / Tmp перегородка заповнена або забита.
Видалено тому, що -e більше не використовує тимчасові файли.
Неможливо записати у тимчасовий файл для -e: %s
(F) Процедура запису з певної причини не вдалася під час спроби обробити a -e перемикач.
Може, твій / Tmp перегородка заповнена або забита.
Видалено тому, що -e більше не використовує тимчасові файли.
Не вдається відкрити тимчасовий файл
(F) З певної причини не вдалося виконати процедуру створення під час спроби обробити a -e перемикач.
Може, твій / Tmp перегородка заповнена або забита.
Видалено тому, що -e більше не використовує тимчасові файли.
регулярний вираз занадто великий
(F) Поточна реалізація регулярних виразів використовує шорти як зміщення адреси
всередині рядка. На жаль, це означає, що якщо регулярний вираз компілюється до
довше 32767, він вибухне. Зазвичай, коли ви хочете отримати регулярний вираз this
великий, є кращий спосіб зробити це за допомогою кількох операторів. Дивіться perlre.
конфігурація Зміни
Ви можете використовувати "Configure -Uinstallusrbinperl", який змушує installperl пропускати встановлення
perl також як /usr/bin/perl. Це корисно, якщо ви хочете не змінювати / usr / bin для деяких
Причина чи інша, але шкідлива, тому що багато сценаріїв припускають, що знаходять Perl у /usr/bin/perl.
Використовуйте perl5005delta онлайн за допомогою служб onworks.net
