#perl #try-catch #perl5.34
Вопрос:
Я знаю, что Perl недавно получил try
/ catch
. Какая версия Perl поставляется вместе с ней?
Комментарии:
1.Изменения в пробах, Объектно-ориентированная обработка исключений в Perl
2. @PolarBear это самоответ, к вашему сведению. Дело сделано. Мне просто нужно было посмотреть это, и я пытаюсь спасти людей от этого в будущем. Примечание. Хотя речь идет не о модуле, в Perl 5.34 есть основная функция try/catch, эти ссылки на самом деле не актуальны
3. Это часть perl, она просто помечена как экспериментальная. Он поставляется с Perl 5.34, и никакие модули не требуются за пределами стандартных базовых модулей.
4. @PolarBear вы принимали вакцину от COVID?
signatures
были «экспериментальными» более пяти лет, и они используются повсюду. Я не думаю, что это значит то, что ты думаешь. Это в основном просто означает, что реализация может быть изменена и удалена (не смерть).5. @PolarBear аналогично, вы могли бы сказать то же самое о любой основной версии semvar для всего программного обеспечения. В Perl 5 все функции могут быть изменены в Perl 7 (следующая основная версия). И хотя маловероятно, что эта функция стабильна в Perl 7, кажется, что это не более важно, чем просто сказать, что вы менее склонны к риску, чем я (и другие): «все объекты перемещаются, и ничто не остается неподвижным». Я знаю достаточно о завтрашнем дне, чтобы добраться туда сегодня, вы можете присоединиться ко мне на досуге.
Ответ №1:
На странице «В основном игнорируемые эксперименты» перечислены функции по мере их добавления и (иногда) последующего исключения из экспериментальной категории. Вы также можете увидеть, когда функции были удалены.
Если вы используете версию по адресу perldoc.perl.org, вы, вероятно, всегда читаете последнюю версию стабильных документов (возможно, через несколько дней после выпуска), поэтому вам не нужно полагаться на свои локальные документы. Однако, если этого нет в ваших локальных документах, в вашем Perl этого нет. 🙂
Аналогичным образом, в feature.pm в документах отображается название каждой функции, название ее экспериментального предупреждения, когда это необходимо, и в каких пакетах версий отображается каждая функция. То есть, когда вы включаете use v5.x
, какие функции включаются автоматически.
Экспериментальная прагма (начиная с версии 5.18) полезна таким же образом и, возможно, является лучшим обобщением всего. Вместо этих двух строк:
use feature qw(try);
no warnings qw(experimental::try);
у тебя есть одна строчка:
use experimental qw(try);
Это еще удобнее, когда вы отключаете несколько предупреждений о функциях, так как вы не вводите experimental::
их перед каждым из них:
use experimental qw(signatures try);
Комментарии:
1. Обратите внимание, что это
use experimental qw( try );
было случайно пропущено из документации, но работает.
Ответ №2:
- Как
experimental
особенность: версия Perl 5.34 была первой версией Perl, поддерживающей собственный try catch. - Ни одна версия Perl пока не поддерживает его вне экспериментального режима. Существует открытая проблема, связанная с отслеживанием развития и созревания функции до тех пор, пока она не будет выпущена как стабильная.