Внутреннее устройство
СОДЕРЖАНИЕ
ИМЯ
Внутреннее устройство — Зарезервированное специальное имя пространства имён для внутренних функций
СИНТАКСИС
$is_ro= Internals::SvREADONLY($x)
$refcnt= Internals::SvREFCNT($x)
hv_clear_placeholders(%hash); ОПИСАНИЕ
Пространство имён Internal используется основной командой разработчиков 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.36.0/Internals