Spec-Zone.ru › Perl 5.34

Внутреннее устройство

СОДЕРЖАНИЕ

  • ИМЯ
  • СИНОПСИС
  • ОПИСАНИЕ
    • ФУНКЦИИ
  • АВТОР
  • СМОТРИТЕ ТАКЖЕ

ИМЯ

Internals — Зарезервированное специальное пространство имён для внутренних функций.

СИНОПСИС

$is_ro= Internals::SvREADONLY($x)
$refcnt= Internals::SvREFCNT($x)
hv_clear_placeholders(%hash);

ОПИСАНИЕ

Пространство имён Internals используется основной командой разработчиков Perl для экспонирования определённых низкоуровневых внутренних процедур для тестирования и других целей.

По теории, эти процедуры не предназначались и не предназначены для использования за пределами ядра Perl и могут быть изменены или удалены в любое время.

На практике люди стали полагаться на эти процедуры на протяжении многих лет, несмотря на историческую недокументированность, поэтому мы обеспечим определённый уровень совместимости вперёд на некоторое время. Тем не менее, вы можете предположить, что любая задокументированная здесь процедура является экспериментальной или устаревшей, и вы должны найти альтернативы их использованию.

ФУНКЦИИ

SvREFCNT(THING [, $value])

Исторически Perl был языком со счётом ссылок. Это означает, что каждая переменная отслеживает, сколько объектов ссылается на неё, и когда на переменную больше не ссылаются, она автоматически освобождается. По теории, код Perl не должен заботиться об этом, и в будущей версии Perl может быть изменена стратегия, хотя на практике это маловероятно.

Эта функция позволяет нарушить абстракцию переменных и получить или установить счётчик ссылок переменной, и, как правило, полезна только в коде, тестирующем поведение счёта ссылок.

*ПРИМЕЧАНИЕ* Настоятельно не рекомендуется использовать эту функцию в коде, не предназначенном для тестирования, и особенно не рекомендуется использовать форму установки этой функции. Результаты этого могут привести к ошибкам сегментации или другому неопределённому поведению.

SvREADONLY(THING, [, $value])

Установить или получить, является ли переменная только для чтения или нет. Точный смысл флага только для чтения зависит от типа затронутой переменной и версии Perl.

Настоятельно не рекомендуется использовать эту функцию напрямую. Она используется различными модулями ядра, например, Hash::Util, и макросом constant для реализации поведенческих функций более высокого уровня, которые следует использовать вместо неё.

См. реализацию ядра для точного значения флага только для чтения для каждого типа внутренней переменной.

hv_clear_placeholders(%hash)

Очистить все плейсхолдеры из заблокированного хеша. Не следует использовать напрямую. Вы должны использовать функции-обёртки, предоставленные модулем Hash::Util. С версии 5.25 также доступно как Hash::Util::_clear_placeholders(%hash)

АВТОР

Команда разработчиков Perl.

СМОТРИТЕ ТАКЖЕ

perlguts Hash::Util constant universal.c

© 1993–2021 Larry Wall and others
Licensed under the GNU General Public License version 1 or later, or the Artistic License.
The Perl logo is a trademark of the Perl Foundation.
https://perldoc.perl.org/5.34.0/Internals

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API