perlintern
СОДЕРЖАНИЕ
- НАЗВАНИЕ
- ОПИСАНИЕ
- Обработка AV
- Функции обратного вызова
- Преобразование типов
- Изменение регистра символов
- Классификация символов
- Информация о компиляторе и препроцессоре
- Директивы компилятора
- Временные крючки области компиляции
- Конкурентность
- Хеши подсказок COP
- Пользовательские операторы
- Обработка CV
- Отладка
- Функции отображения
- Встраивание и клонирование интерпретатора
- Errno
- Макросы обработки исключений (простые)
- Значения конфигурации файловой системы
- Значения конфигурации с плавающей точкой
- Форматы
- Общие настройки
- Глобальные переменные
- Обработка GV
- Управление крючками
- Обработка HV
- Ввод/вывод
- Целочисленные значения конфигурации
- Интерфейс лексического анализатора
- Локали
- Магия
- Управление памятью
- MRO
- Функции многокрального вызова
- Числовые функции
- Построение Optree
- Функции манипулирования Optree
- Упаковывание и распаковывание
- Структуры данных Pad
- Доступ к паролям и группам
- Пути к системным командам
- Информация о прототипах
- Функции REGEXP
- Сигналы
- Конфигурация сайта
- Значения конфигурации сокетов
- Фильтры исходного кода
- Макросы манипулирования стеком
- Обработка строк
- Флаги SV
- Обработка SV
- Время
- Имена typedef
- Поддержка Unicode
- Служебные функции
- Версионирование
- Предупреждения и завершение работы
- XS
- Недокументированные элементы
- АВТОРЫ
- СМОТРИТЕ ТАКЖЕ
НАЗВАНИЕ
perlintern - сгенерированная документация чисто внутренних функций Perl
ОПИСАНИЕ
Этот файл содержит сгенерированную документацию функций Perl-интерпретатора, которые документированы с использованием внутреннего формата Perl, но не помечены как часть API Perl. Другими словами, они не предназначены для использования в расширениях!
Он имеет те же разделы, что и perlapi, хотя некоторые могут быть пустыми.
Обработка AV
-
AvFILLp -
Если массив
avпуст, возвращает -1; в противном случае возвращает максимальное значение индексов всех элементов массива, которые в настоящее время определены вav. Он не обрабатывает магию, поэтому в его имени указаноp.SSize_t AvFILLp(AV* av)
Функции обратного вызова
В разделах Функции обратного вызова пока только общедоступные API элементы.
Преобразование типов
В разделах Преобразование типов пока только общедоступные API элементы.
Изменение регистра символов
В разделах Изменение регистра символов пока только общедоступные API элементы.
Классификация символов
В разделах Классификация символов пока только общедоступные API элементы.
Информация о компиляторе и препроцессоре
В разделах Информация о компиляторе и препроцессоре пока только общедоступные API элементы.
Директивы компилятора
В разделах Директивы компилятора пока только общедоступные API элементы.
Временные крючки области компиляции
-
BhkENTRY -
ПРИМЕЧАНИЕ:
BhkENTRYявляется экспериментальным и может быть изменён или удалён без предварительного уведомления.Возвращает запись из структуры BHK.
which— это препроцессорный токен, указывающий, какую запись вернуть. Если соответствующий флаг не установлен, возвращаетсяNULL. Тип возвращаемого значения зависит от запрашиваемой записи.void * BhkENTRY(BHK *hk, which)
-
BhkFLAGS -
ПРИМЕЧАНИЕ:
BhkFLAGSявляется экспериментальным и может быть изменён или удалён без предварительного уведомления.Возвращает флаги BHK.
U32 BhkFLAGS(BHK *hk)
-
CALL_BLOCK_HOOKS -
ПРИМЕЧАНИЕ:
CALL_BLOCK_HOOKSявляется экспериментальным и может быть изменён или удалён без предварительного уведомления.Вызывает все зарегистрированные крючки блоков для типа
which.which— это препроцессорный токен; типargзависит отwhich.void CALL_BLOCK_HOOKS(which, arg)
Конкурентность
В разделах Конкурентность пока только общедоступные API элементы.
Хеши подсказок COP
В разделах Хеши подсказок COP пока только общедоступные API элементы.
Пользовательские операторы
-
core_prototype -
Эта функция присваивает прототип указанной ядра функции
sv, или новую временную SV, еслиsvравноNULL. Возвращает изменённыйsv, илиNULLесли у ядра функции нет прототипа.code— это код, возвращённыйkeyword(). Он не должен быть равен 0.SV * core_prototype(SV *sv, const char *name, const int code, int * const opnum)
Обработка CV
-
CvWEAKOUTSIDE -
Каждый CV имеет указатель
CvOUTSIDE()на свой лексически внешний CV (если таковой имеется). Поскольку указатели на прототипы анонимных подпрограмм хранятся в слотах стека&, возможно получение циклической ссылки, когда родитель указывает на ребёнка, а ребёнок — на родителя. Чтобы избежать утечки памяти, мы не увеличиваем счётчик ссылок CV, на который указываетCvOUTSIDEв определённом случае, когда у родителя есть слот стека&, указывающий на нас. В этом случае мы устанавливаем флагCvWEAKOUTSIDEу ребёнка. Это позволяет определить, в каких случаях мы должны уменьшать счётчик ссылок родителя при освобождении ребёнка.Существует дальнейшее усложнение с анонимными подпрограммами без замыкания (то есть, теми, которые не ссылаются на какие-либо лексические переменные вне этой подпрограммы). В этом случае анонимный прототип совместно используется, а не клонируется. Это означает, что родитель может быть освобождён, в то время как активны дочерние подпрограммы, например,
BEGIN { $a = sub { eval '$x' } }В этом случае BEGIN освобождается сразу после выполнения, поскольку активных ссылок на него нет: прототип анонимной подпрограммы имеет
CvWEAKOUTSIDEустановленным, так как он не является замыканием, и $a указывает на тот же CV, так что он не увеличивает счётчик ссылок BEGIN. Когда $a выполняется,eval '$x'вызывает цепочкуCvOUTSIDEи доступ к освобождённому BEGIN.Чтобы избежать этого, каждый раз, когда CV и связанный с ним стек освобождаются, все записи
&в стеке явно удаляются, и если счётчик ссылок на указанную анонимную подпрограмму всё ещё положителен, тоCvOUTSIDEребёнка устанавливается на указание на его прародителя. Это произойдёт только в единственном случае, когда у анонимного прототипа без замыкания есть одна или более активных ссылок (например,$aвыше).Ещё один момент — CV может быть просто неопределённым, а не освобождённым, например,
undef &foo. В этом случае его счётчик ссылок может не достигнуть нуля, но мы всё равно удаляем его стек и егоCvROOTи т.д. Поскольку различные дочерние элементы могут всё ещё указывать своимCvOUTSIDEна этот неопределённый CV, мы сохраняем егоCvOUTSIDEна некоторое время, чтобы цепочка лексических областей оставалась неразрывной. Например, следующее должно напечатать 123:my $x = 123; sub tmp { sub { eval '$x' } } my $a = tmp(); undef &tmp; print $a->();bool CvWEAKOUTSIDE(CV *cv)
-
docatch -
Проверка случаев 0 или 3 для cur_env.je_ret, используется только внутри контекста eval.
0 используется как продолжение внутри eval,
3 используется для исключения, пойманного внутренним eval — продолжение внутреннего цикла
См. cop.h: je_mustcatch, если установлено в любом уровне выполнения в TRUE, означает, что операции eval должны установить локальную jmpenv для обработки ловушек исключений.
OP* docatch(Perl_ppaddr_t firstpp)
Отладка
-
free_c_backtrace -
Освобождает трассировку стека, полученную из get_c_backtrace.
void free_c_backtrace(Perl_c_backtrace* bt)
-
get_c_backtrace -
Собирает трассировку стека (также известную как «стековая трассировка») в один линейный буфер, выделенный с помощью malloc, который вызывающий код обязан
Perl_free_c_backtrace().Сканирует фреймы назад на
depth + skip, затем опускаетskipсамый внутренний, возвращая не болееdepthфреймов.Perl_c_backtrace* get_c_backtrace(int max_depth, int skip)
-
PL_DBsingle -
Когда Perl запускается в режиме отладки с ключом -d, эта переменная SV — булево значение, указывающее, выполняются ли подпрограммы пошагово. Пошаговое выполнение автоматически включается после каждого шага. Это переменная C, которая соответствует переменной Perl $DB::single. См.
"PL_DBsub".В многопоточных Perl-интерпретаторах у каждого потока есть независимая копия этой переменной; каждая из них инициализируется при создании текущим значением копии переменной создающего потока.
SV * PL_DBsingle
-
PL_DBsub -
Когда Perl запускается в режиме отладки с ключом -d, эта GV содержит SV, который хранит имя подпрограммы, отлаживаемой в данный момент. Это переменная C, которая соответствует переменной Perl $DB::sub. См.
"PL_DBsingle".В многопоточных Perl-интерпретаторах у каждого потока есть независимая копия этой переменной; каждая из них инициализируется при создании текущим значением копии переменной создающего потока.
GV * PL_DBsub
-
PL_DBtrace -
Переменная трассировки, используемая при запуске Perl в режиме отладки с ключом -d. Это переменная C, которая соответствует переменной Perl $DB::trace. См.
"PL_DBsingle".В многопоточных Perl-интерпретаторах у каждого потока есть независимая копия этой переменной; каждая из них инициализируется при создании текущим значением копии переменной создающего потока.
SV * PL_DBtrace
Функции отображения
В настоящее время в функциях отображения находятся только элементы открытого API.
Встраивание и клонирование интерпретатора
-
cv_dump -
вывести содержимое CV
void cv_dump(const CV *cv, const char *title)
-
cv_forget_slab -
Когда CV имеет счётчик ссылок на свой фрагмент (
CvSLABBED), он несёт ответственность за его освобождение. (Поэтому ни у двух CV не должно быть счётчика ссылок на один и тот же фрагмент.) CV нужен только для ссылки на фрагмент во время компиляции. После компиляции иCvROOTприсоединения он выполнил свою работу, поэтому может забыть фрагмент.void cv_forget_slab(CV *cv)
-
do_dump_pad -
Вывод содержимого списка областей
void do_dump_pad(I32 level, PerlIO *file, PADLIST *padlist, int full)
-
pad_alloc_name -
Выделяет место в текущей компилируемой области (через "pad_alloc" в perlapi) и затем сохраняет имя для этой записи.
nameпринимается и становится именем записи; она должна уже содержать строку имени.typestashиourstashиpadadd_STATEфлаг добавляются кname. Никакие другие обработки из "pad_add_name_pvn" в perlapi не выполняются. Возвращает смещение выделенного слота области.PADOFFSET pad_alloc_name(PADNAME *name, U32 flags, HV *typestash, HV *ourstash)
-
pad_block_start -
Обновляет переменные состояния компиляции области при входе в новый блок.
void pad_block_start(int full)
-
pad_check_dup -
Проверка на дублирование объявлений: сообщается о любом из:
* a 'my' in the current scope with the same name; * an 'our' (anywhere in the pad) with the same name and the same stash as 'ourstash'is_ourуказывает, что проверяемое имя является"our"объявлением.void pad_check_dup(PADNAME *name, U32 flags, const HV *ourstash)
-
pad_findlex -
Поиск именованного лексического значения в цепи вложенных областей. Добавляет фиктивные записи во внутренние области, если оно найдено во внешней.
Возвращает смещение в нижней области лексического или фиктивного лексического значения.
cv— CV, в котором нужно начать поиск, а seq — текущееcop_seqдля сопоставления. Еслиwarnимеет значение true, выводятся соответствующие предупреждения. Переменныеout_* возвращают значения и являются указателями на место, куда должны быть сохранены возвращаемые значения.out_capture, если не null, запрашивает, чтобы внутреннее экземпляр лексического значения было захвачено;out_nameустанавливается в имя самой внутренней сопоставленной области или имени фиктивной области;out_flagsвозвращает флаги, обычно связанные с полемPARENT_FAKELEX_FLAGSфиктивного имени области.Обратите внимание, что
pad_findlex()рекурсивен; он рекурсивно проходит по цепи CV, затем возвращается вниз, добавляя фиктивные записи по мере прохождения. Он должен быть таким, потому что фиктивные имена в анонимных прототипах должны хранить вxpadn_lowиндекс во внешней области.PADOFFSET pad_findlex(const char *namepv, STRLEN namelen, U32 flags, const CV* cv, U32 seq, int warn, SV** out_capture, PADNAME** out_name, int *out_flags)
-
pad_fixup_inner_anons -
Для всех анонимных CV в области, измените
CvOUTSIDEэтого CV сold_cvнаnew_cv, если это необходимо. Необходимо, когда только что скомпилированный CV нужно переместить в уже существующую структуру CV.void pad_fixup_inner_anons(PADLIST *padlist, CV *old_cv, CV *new_cv)
-
pad_free -
Освободить SV со смещением po в текущей области.
void pad_free(PADOFFSET po)
-
pad_leavemy -
Очистка в конце области во время компиляции: устанавливает максимальное число последовательности для лексических переменных в этой области и предупреждает о любых лексических переменных, которые никогда не были введены.
OP * pad_leavemy()
-
padlist_dup -
Дублирует область.
PADLIST * padlist_dup(PADLIST *srcpad, CLONE_PARAMS *param)
-
padname_dup -
Дублирует имя области.
PADNAME * padname_dup(PADNAME *src, CLONE_PARAMS *param)
-
padnamelist_dup -
Дублирует список имен областей.
PADNAMELIST * padnamelist_dup(PADNAMELIST *srcpad, CLONE_PARAMS *param)
-
pad_push -
Добавляет новую область в список областей, если в этом уровне вложенности уже есть область, то новую область создавать не нужно. Затем задайте
@_для новой области в слоте ноль.void pad_push(PADLIST *padlist, int depth)
-
pad_reset -
Пометить все текущие временные переменные для повторного использования
void pad_reset()
-
pad_setsv -
Установить значение со смещением
poв текущей (компилируемой или выполняемой) области. Используйте макросPAD_SETSV()вместо прямого вызова этой функции.void pad_setsv(PADOFFSET po, SV* sv)
-
pad_sv -
Получить значение со смещением
poв текущей (компилируемой или выполняемой) области. Используйте макросPAD_SVвместо прямого вызова этой функции.SV* pad_sv(PADOFFSET po)
-
pad_swipe -
Отказаться от временной переменной в текущей области по смещению
poи заменить её новой.void pad_swipe(PADOFFSET po, bool refadjust)
Errno
-
dSAVEDERRNO -
Объявление переменных, необходимых для сохранения
errnoи любого операционной системы специального номера ошибки.void dSAVEDERRNO
-
dSAVE_ERRNO -
Объявление переменных, необходимых для сохранения
errnoи любого операционной системы специального номера ошибки, и их сохранения для возможного последующего восстановления функциейRESTORE_ERRNO.void dSAVE_ERRNO
-
RESTORE_ERRNO -
Восстановление
errnoи любого операционной системы специального номера ошибки, сохранённого функциямиdSAVE_ERRNOилиRESTORE_ERRNO.void RESTORE_ERRNO
-
SAVE_ERRNO -
Сохранение
errnoи любого операционной системы специального номера ошибки для возможного последующего восстановления функциейRESTORE_ERRNOТребуетсяdSAVEDERRNOилиdSAVE_ERRNOв области видимости.void SAVE_ERRNO
-
SETERRNO -
Установить
errno, а на VMS установитьvaxc$errno.void SETERRNO(int errcode, int vmserrcode)
Макросы обработки исключений (простые)
В настоящее время в макросах обработки исключений (простых) находятся только элементы открытого API.
Значения конфигурации файловой системы
В настоящее время в значениях конфигурации файловой системы находятся только элементы открытого API.
Значения конфигурации с плавающей запятой
В настоящее время в значениях конфигурации с плавающей запятой находятся только элементы открытого API.
Форматы
В настоящее время в форматах находятся только элементы открытого API.
Общая конфигурация
В настоящее время в общей конфигурации находятся только элементы открытого API.
Глобальные переменные
В настоящее время в глобальных переменных находятся только элементы открытого API.
Обработка GV
-
gv_stashsvpvn_cached -
Возвращает указатель на скрытие для указанного пакета, возможно, кэшированного. Реализует как "
gv_stashpvn" в perlapi, так и "gv_stashsv" в perlapi.Требуется, чтобы одна из
namesvилиnamepvбыла не равна null.Если установлен флаг
GV_CACHE_ONLY, возвращает скрытие только в том случае, если оно найдено в кэше; см. "gv_stashpvn" в perlapi для получения сведений об остальныхflags.Обратите внимание, что предпочтительно, чтобы
namesvбыла не равна null по соображениям производительности.HV* gv_stashsvpvn_cached(SV *namesv, const char* name, U32 namelen, I32 flags)
-
gv_try_downgrade -
ПРИМЕЧАНИЕ:
gv_try_downgradeявляется экспериментальным и может быть изменён или удалён без предварительного уведомления.Если типглоб
gvможет быть выражен более лаконично, заменив реальный GV в стеке чем-то другим, замените его оптимизированной формой. Основные требования к этому заключаются в том, чтоgvявляется реальным типглобом, достаточно обычным и ссылается только из своего пакета. Данная функция предназначена для использования в случае, когда GV был частично просмотрен для определения его содержимого, вызвав обновление, но на основании полученных данных выяснилось, что реальный GV всё-таки не требуется.Если
gvявляется полностью пустым типглобом, он удаляется из стека.Если
gvявляется типглобом, содержащим только подпрограмму константы, достаточно обычную, типглоб заменяется заполнительной ссылкой на скаляр, более компактно представляющей то же самое.void gv_try_downgrade(GV* gv)
Обработка хуков
В настоящее время в разделе «Обработка хуков» присутствуют только элементы публичного API.
Обработка HV
-
hv_ename_add -
Добавляет имя в внутренний список эффективных имён стека. Смотрите
"hv_ename_delete".Вызывается при назначении стека в новом месте в таблице символов.
void hv_ename_add(HV *hv, const char *name, U32 len, U32 flags)
-
hv_ename_delete -
Удаляет имя из внутреннего списка эффективных имён стека. Если это имя, возвращённое
HvENAME, то другое имя в списке займёт его место (HvENAMEбудет использовать его).Вызывается при удалении стека из таблицы символов.
void hv_ename_delete(HV *hv, const char *name, U32 len, U32 flags)
-
refcounted_he_chain_2hv -
Генерирует и возвращает
HV *, представляющий содержимое цепочкиrefcounted_he.flagsв настоящее время не используется и должно быть равно нулю.HV * refcounted_he_chain_2hv(const struct refcounted_he *c, U32 flags)
-
refcounted_he_fetch_pv -
Подобно "refcounted_he_fetch_pvn", но принимает строку с нулевым завершением вместо пары "строка/длина".
SV * refcounted_he_fetch_pv(const struct refcounted_he *chain, const char *key, U32 hash, U32 flags)
-
refcounted_he_fetch_pvn -
Ищет в цепочке
refcounted_heзапись с ключом, заданнымkeypvиkeylen. Еслиflagsимеет установленный битREFCOUNTED_HE_KEY_UTF8, байты ключа интерпретируются как UTF-8, в противном случае как Latin-1.hash— предварительно вычисленный хэш строки ключа или ноль, если он не был предварительно вычислен. Возвращает смертный скаляр, представляющий значение, связанное с ключом, или&PL_sv_placeholder, если значение для ключа отсутствует.SV * refcounted_he_fetch_pvn(const struct refcounted_he *chain, const char *keypv, STRLEN keylen, U32 hash, U32 flags)
-
refcounted_he_fetch_pvs -
Подобно "refcounted_he_fetch_pvn", но принимает строку в прямом виде вместо пары "строка/длина" и без предварительно вычисленного хэша.
SV * refcounted_he_fetch_pvs(const struct refcounted_he *chain, "key", U32 flags)
-
refcounted_he_fetch_sv -
Подобно "refcounted_he_fetch_pvn", но принимает скаляр Perl вместо пары "строка/длина".
SV * refcounted_he_fetch_sv(const struct refcounted_he *chain, SV *key, U32 hash, U32 flags)
-
refcounted_he_free -
Уменьшает счётчик ссылок
refcounted_heна единицу. Если счётчик ссылок достигает нуля, память структуры освобождается, что (рекурсивно) приводит к уменьшению счётчика ссылок родительскойrefcounted_heструктуры. Передача нулевого указателя в эту функцию безопасна: в этом случае никаких действий не происходит.void refcounted_he_free(struct refcounted_he *he)
-
refcounted_he_inc -
Увеличивает счётчик ссылок
refcounted_he. Также возвращается указатель наrefcounted_he. Передача нулевого указателя в эту функцию безопасна: никаких действий не происходит, и возвращается нулевой указатель.struct refcounted_he * refcounted_he_inc( struct refcounted_he *he)
-
refcounted_he_new_pv -
Подобно "refcounted_he_new_pvn", но принимает строку с нулевым завершением вместо пары "строка/длина".
struct refcounted_he * refcounted_he_new_pv( struct refcounted_he *parent, const char *key, U32 hash, SV *value, U32 flags)
-
refcounted_he_new_pvn -
Создаёт новую
refcounted_he. Она состоит из одной пары ключ/значение и ссылки на существующую цепочкуrefcounted_he(которая может быть пустой), и таким образом образует более длинную цепочку. При использовании более длинной цепочки новая пара ключ/значение имеет приоритет над любой записью с тем же ключом в дальнейшей части цепочки.Новый ключ задаётся
keypvиkeylen. Еслиflagsимеет установленный битREFCOUNTED_HE_KEY_UTF8, байты ключа интерпретируются как UTF-8, в противном случае как Latin-1.hash— предварительно вычисленный хэш строки ключа или ноль, если он не был предварительно вычислен.value— скалярное значение для хранения по этому ключу.valueкопируется этой функцией, которая не берёт на себя ответственность за любую ссылку на него, и последующие изменения скаляра не будут отражены в значении, видимом вrefcounted_he. Сложные типы скаляров не будут храниться с целостностью ссылок, а будут преобразованы в строки.valueможет быть либо null, либо&PL_sv_placeholderдля указания того, что значение не должно быть связано с ключом; это, как и любое ненулевое значение, имеет приоритет над существованием значения для ключа в дальнейшей части цепочки.parentуказывает на остальную часть цепочкиrefcounted_heдля присоединения к новойrefcounted_he. Эта функция берёт на себя ответственность за одну ссылку наparent, и возвращает одну ссылку на новуюrefcounted_he.struct refcounted_he * refcounted_he_new_pvn( struct refcounted_he *parent, const char *keypv, STRLEN keylen, U32 hash, SV *value, U32 flags)
-
refcounted_he_new_pvs -
Подобно "refcounted_he_new_pvn", но принимает строку в прямом виде вместо пары "строка/длина" и без предварительно вычисленного хэша.
struct refcounted_he * refcounted_he_new_pvs( struct refcounted_he *parent, "key", SV *value, U32 flags)
-
refcounted_he_new_sv -
Подобно "refcounted_he_new_pvn", но принимает скаляр Perl вместо пары "строка/длина".
struct refcounted_he * refcounted_he_new_sv( struct refcounted_he *parent, SV *key, U32 hash, SV *value, U32 flags)
Ввод/Вывод
-
PL_last_in_gv -
GV, который был последним использован для операции ввода файла. (
<FH>)В многопоточных Perl-интерпретаторах каждый поток имеет независимую копию этой переменной; каждая инициализируется при создании текущим значением копии создающего потока.
GV* PL_last_in_gv
-
PL_ofsgv -
Глоб, содержащий разделитель выходных полей -
*,в пространстве Perl.В многопоточных Perl-интерпретаторах каждый поток имеет независимую копию этой переменной; каждая инициализируется при создании текущим значением копии создающего потока.
GV* PL_ofsgv
-
PL_rs -
Разделитель записей ввода -
$/в пространстве Perl.В многопоточных Perl-интерпретаторах каждый поток имеет независимую копию этой переменной; каждая инициализируется при создании текущим значением копии создающего потока.
SV* PL_rs
-
start_glob -
ПРИМЕЧАНИЕ:
start_globявляется экспериментальным и может быть изменён или удалён без предварительного уведомления.Функция, вызываемая
do_readlineдля создания глобу (или выполнения глобу внутри perl на VMS). Этот код раньше был встроенным, но сейчас perl используетFile::Glob. Этот инициализатор глобу используется только miniperl во время процесса сборки или когда определён PERL_EXTERNAL_GLOB. Перемещение его уменьшает размер pp_hot.c, что ускоряет perl.ПРИМЕЧАНИЕ:
start_globдолжен быть явно вызван какPerl_start_globс параметромaTHX_.PerlIO* Perl_start_glob(pTHX_ SV *tmpglob, IO *io)
Целочисленные значения конфигурации
В настоящее время в разделе «Целочисленные значения конфигурации» присутствуют только элементы публичного API.
Интерфейс лексического анализатора
-
validate_proto -
ПРИМЕЧАНИЕ:
validate_protoявляется экспериментальным и может быть изменён или удалён без предварительного уведомления.Эта функция выполняет проверку синтаксиса прототипа
proto. Еслиwarnистинно, любые недопустимые символы или несовпадающие скобки приведут к предупреждениям illegalproto, заявляя, что они были обнаружены в прототипе дляname.Значение возврата -
trueесли это допустимый прототип иfalseесли нет, независимо от того, было лиwarnравноtrueилиfalse.Обратите внимание, что
NULLявляется допустимымprotoи всегда будет возвращатьtrue.bool validate_proto(SV *name, SV *proto, bool warn, bool curstash)
Локали
В настоящее время в разделе «Локали» присутствуют только элементы публичного API.
Магия
-
magic_clearhint -
Вызывается при удалении из
%^H, записывает ключ вPL_compiling.cop_hints_hash.int magic_clearhint(SV* sv, MAGIC* mg)
-
magic_clearhints -
Вызывается при очистке
%^H, сбрасываетPL_compiling.cop_hints_hash.int magic_clearhints(SV* sv, MAGIC* mg)
-
magic_methcall -
Вызывает магический метод (например, FETCH).
svиmg— привязанный элемент и магия привязки.meth— имя вызываемого метода.argc— количество аргументов (кроме $self), передаваемых методу.flagsможет быть:G_DISCARD invoke method with G_DISCARD flag and don't return a value G_UNDEF_FILL fill the stack with argc pointers to PL_sv_undefСами аргументы — любые значения после аргумента
flags.Возвращает SV (если есть) возвращённый методом или
NULLпри ошибке.ПРИМЕЧАНИЕ:
magic_methcallдолжен быть явно вызван какPerl_magic_methcallс параметромaTHX_.SV* Perl_magic_methcall(pTHX_ SV *sv, const MAGIC *mg, SV *meth, U32 flags, U32 argc, ...)
-
magic_sethint -
Вызывается при записи в
%^H, записывает пару ключ/значение вPL_compiling.cop_hints_hash. Предполагается, что подсказки не хранят ничего, для чего потребовалась бы глубокая копия. Возможно, стоит предупреждать, если мы найдём ссылку.int magic_sethint(SV* sv, MAGIC* mg)
-
mg_localize -
Скопировать часть магических свойств из существующего SV в новую локализацию этого SV. Магические свойства контейнера (например,
%ENV,$1,tie) копируются, магические свойства значений (например,taint,pos).Если
setmagicложно, то магические свойства нового (пустого) SV не будут вызваны. Обычно это означает, что вскоре последует присваивание (например,'local $x = $y'), и оно обработает магические свойства.void mg_localize(SV* sv, SV* nsv, bool setmagic)
Управление памятью
В данный момент в разделе «Управление памятью» находятся только элементы публичного API.
MRO
-
mro_get_linear_isa_dfs -
Возвращает линейное представление поиска в глубину (Depth-First Search) для
@ISAзаданного хранилища. Возвращаемое значение — AV* только для чтения.levelдолжно быть равно 0 (используется во внутренней рекурсии функции).Вы несете ответственность за
SvREFCNT_inc()возвращаемого значения, если планируете его где-либо хранить (иначе оно может быть удалено при следующем обновлении кеша).AV* mro_get_linear_isa_dfs(HV* stash, U32 level)
-
mro_isa_changed_in -
Выполняет необходимые шаги (в основном, обновления кеша) при изменении
@ISAданного пакета. Вызывается магическими свойствамиsetisa, не нужно вызывать напрямую.void mro_isa_changed_in(HV* stash)
-
mro_package_moved -
Вызовите эту функцию, чтобы сообщить хранилищу, что оно было назначено в другое место в иерархии хранилищ.
stash— хранилище, которому было назначено новое место.oldstash— хранилище, которое оно заменяет (если таковое имеется).gv— глобальная область, которой фактически назначено новое место.Также можно вызвать эту функцию с нулевым первым аргументом, чтобы указать, что
oldstashбыло удалено.Эта функция обновляет кеши ISA для старого хранилища, всех вложенных подпакетов и подклассов, включая несуществующие пакеты, которые имеют соответствующие записи в
stash.Она также устанавливает эффективные имена (
HvENAME) для всех хранилищ по мере необходимости.Если
gvприсутствует и отсутствует в таблице символов, функция просто возвращает значение. Эта проверка пропускается, еслиflags & 1.void mro_package_moved(HV * const stash, HV * const oldstash, const GV * const gv, U32 flags)
Функции многократного вызова
В данный момент в разделе «Функции многократного вызова» находятся только элементы публичного API.
Функции для работы с числами
-
grok_atoUV -
Разбор строки, поиск десятичного беззнакового целого числа.
На входе
pvуказывает на начало строки;valptrуказывает на UV, который получит преобразованное значение, если найдено;endptrлибо равен NULL, либо указывает на переменную, которая указывает на байт после точки вpv, с которой должна начинаться обработка этой функцией. Еслиendptrравен NULL, то предполагается, чтоpvзавершается нулевым символом.Возвращает FALSE, если
pvне представляет собой действительное беззнаковое целое число (без ведущих нулей). В противном случае возвращает TRUE и устанавливает значение*valptr.Если вы ограничите часть
pv, которая анализируется этой функцией (передав ненулевойendptr), и начальные байты этой части образуют действительное значение, функция вернет TRUE, установив*endptrна байт после последней цифры значения. Но если ограничений нет, всяpvдолжна быть валидной, чтобы функция вернула TRUE.*endptrне меняется при возвращении FALSE;Функция принимает только десятичные цифры '0'..'9'.
В отличие от atoi(3) или strtol(3),
grok_atoUVне допускает необязательных ведущих пробелов, а также отрицательные значения. Если такие возможности требуются, вызывающий код должен их явно реализовать.Обратите внимание, что эта функция возвращает FALSE для входов, которые вызывают переполнение UV или имеют ведущие нули. Таким образом, одиночный
0принимается, но не00ни01,002, и т.д.Предыстория:
atoiимеет серьезные проблемы с недопустимыми входными данными, не может использоваться для инкрементного разбора и поэтому должна избегатьсяatoiиstrtolтакже зависят от настроек локали, что также можно рассматривать как ошибку (управление глобальным состоянием через пользовательскую среду).bool grok_atoUV(const char* pv, UV* valptr, const char** endptr)
-
isinfnansv -
Проверяет, будет ли аргумент бесконечностью или
NaNпри использовании в качестве числа, но при этом осторожно не вызывает предупреждений о нечисловых или неинициализированных значениях. Предполагается, что вызывающий код уже выполнилSvGETMAGIC(sv).bool isinfnansv(SV *sv)
Построение Optree
В данный момент в разделе «Построение Optree» находятся только элементы публичного API.
Функции управления Optree
-
finalize_optree -
Эта функция завершает построение Optree. Следует вызывать сразу после полного построения Optree. Она выполняет дополнительную проверку, которую нельзя выполнить в обычных функциях
ck_xxx, и делает дерево потокобезопасным.void finalize_optree(OP* o)
-
newATTRSUB_x -
Построение подпрограммы Perl, а также выполнение некоторых дополнительных задач.
Ожидается, что эта функция будет вызываться в контексте компиляции Perl, и некоторые аспекты подпрограммы берутся из глобальных переменных, связанных с компиляцией. В частности,
PL_compcvпредставляет подпрограмму, которая в данный момент компилируется. Она должна быть ненулевой при вызове этой функции, и некоторые аспекты строящейся подпрограммы берутся из неё. Построенная подпрограмма может фактически быть повторным использованием объектаPL_compcv, но не обязательно.Если
blockравно null, подпрограмма не будет иметь тела, и на данный момент её вызов будет ошибкой. Это представляет объявление подпрограммы вперёд, например,sub foo ($$);. Еслиblockне равно null, оно предоставляет код тела Perl подпрограммы, который будет выполняться при вызове подпрограммы. Это тело включает в себя код распаковки аргументов, полученный из подпрограммы сигнатуры или аналогичного. Использование стека в коде должно соответствовать стеку, прикреплённому кPL_compcv. Ожидается, что код не будет содержать операторовleavesubилиleavesublv; эта функция добавит такие операторы.blockиспользуется этой функцией и станет частью построенной подпрограммы.protoопределяет прототип подпрограммы, если он не задан как атрибут (см. ниже). Еслиprotoравно null, то подпрограмма не будет иметь прототип. Еслиprotoне равно null, оно должно указывать на операторconst, значение которого — строка, и подпрограмма будет иметь эту строку в качестве прототипа. Если прототип задан в качестве атрибута, атрибут имеет приоритет надproto, но в этом случаеprotoпредпочтительно должно быть null. В любом случае,protoиспользуется этой функцией.attrsпредоставляет атрибуты, которые нужно применить к подпрограмме. Несколько атрибутов действуют встроенным способом, применяясь кPL_compcvсразу при их обнаружении. Другие атрибуты собираются и присоединяются к подпрограмме через этот путь.attrsможет быть null, чтобы не применять атрибуты, указывать на операторconstдля одного атрибута или указывать на операторlist, где дочерние элементы, кромеpushmark, являются операторамиconstдля одного или нескольких атрибутов. Каждый операторconstдолжен быть строкой, указывающей имя атрибута (возможно, с аргументами в скобках), таким образом, как атрибуты отображаются в исходном коде Perl. Атрибуты будут применены к подпрограмме этой функцией.attrsиспользуется этой функцией.Если
o_is_gvложно, аoравно null, подпрограмма будет анонимной. Еслиo_is_gvложно, аoне равно null, тоo_is_gvдолжно указывать на операторconst, который будет использован этой функцией, а его строковое значение задаёт имя подпрограммы. Имя может быть квалифицированным или неквалифицированным, и если оно неквалифицированное, то будет выбран стандартный стек каким-то образом. Еслиo_is_gvистинно, тоoвообще не указывает наOP, а вместо этого является указателем наGV, по которому подпрограмма получит имя.Если уже существует подпрограмма с заданным именем, новая подпрограмма либо заменит существующую в глобальной области, либо будет объединена с существующей. Может быть выведено предупреждение о повторном определении.
Если подпрограмма имеет одно из нескольких специальных имён, таких как
BEGINилиEND, она будет затребована соответствующей очередью для автоматического выполнения подпрограмм, связанных с фазой. В этом случае соответствующая глобальная область останется без подпрограммы, даже если она содержала одну ранее. В случаеBEGIN, подпрограмма будет выполнена, и ссылка на неё будет удалена до возврата этой функции.Функция возвращает указатель на построенную подпрограмму. Если подпрограмма анонимная, то в собственность вызывающего кода передаётся один учтённый указатель на подпрограмму. Если подпрограмма имеет имя, вызывающий код не получает владения ссылкой. В большинстве таких случаев, где у подпрограммы есть нефазовое имя, подпрограмма будет живой в момент возврата функцией из-за того, что она находится в глобальной области, которая её называет. Фазово именованная подпрограмма, как правило, будет жива благодаря ссылке, принадлежащей очереди автоматического запуска фазы. Но подпрограмма
BEGIN, уже выполненная, скорее всего, будет уничтожена к моменту возврата этой функции, что сделает ошибочным использование возвращённого указателя вызывающим кодом. Вызывающий код несёт ответственность за обеспечение того, что он знает, какая из этих ситуаций применима.CV* newATTRSUB_x(I32 floor, OP *o, OP *proto, OP *attrs, OP *block, bool o_is_gv)
-
newXS_len_flags -
Создать подпрограмму XS, выполнив также некоторые окружающие задачи.
Подпрограмма будет иметь точку входа
subaddr. Она будет иметь прототип, указанный в строке с завершающим нулемproto, или без прототипа, еслиprotoравно null. Строка прототипа копируется; вызывающий код может изменять предоставленную строку после этого. Еслиfilenameне равно null, оно должно быть именем файла с завершающим нулем, и подпрограмма будет иметь свойCvFILEсоответственно. По умолчаниюCvFILEустанавливается на указание на предоставленную строку, которая должна быть статической. Если уflagsустановлен битXS_DYNAMIC_FILENAME, вместо этого будет взята копия строки.Другие аспекты подпрограммы останутся в своём стандартном состоянии. Если для корректной работы подпрограммы требуется что-то ещё, вызывающий код обязан сделать это после того, как эта функция её создаст. Однако будьте осторожны, так как подпрограмма может быть уничтожена до возврата этой функции, как описано ниже.
Если
nameравно null, подпрограмма будет анонимной, и еёCvGVбудет ссылаться на__ANON__глобал. Еслиnameне равно null, подпрограмма будет иметь имя соответственно, ссылаясь на соответствующий глобал.name— это строка длинойlenбайта, представляющая имя символа без спецификатора, в UTF-8, еслиflagsимеет битSVf_UTF8, и в Latin-1 в противном случае. Имя может быть квалифицированным или неквалифицированным, при этом стек по умолчанию будет таким же, как и дляgv_fetchpvn_flags.flagsможет содержать биты флагов, понятныеgv_fetchpvn_flagsс тем же значением, что и у них там, например,GV_ADDWARN. Символ всегда добавляется в стек, если необходимо, с семантикойGV_ADDMULTI.Если уже существует подпрограмма с указанным именем, новая подпрограмма заменит существующую в глобле. Может быть сгенерировано предупреждение о переопределении. Если старая подпрограмма была
CvCONST, решение о том, выдавать ли предупреждение, зависит от ожидания того, станет ли новая подпрограмма константой с аналогичным значением. Это ожидание определяется значениемconst_svp. (Обратите внимание, что вызов этой функции не делает новую подпрограммуCvCONSTв любом случае; это остается на усмотрении вызывающего кода.) Еслиconst_svpравно null, это означает, что новая подпрограмма не станет константой. Еслиconst_svpне равно null, это означает, что новая подпрограмма станет константой, и оно указывает наSV*, который предоставляет постоянное значение, которым будет обладать подпрограмма.Если подпрограмма имеет одно из нескольких специальных имён, таких как
BEGINилиEND, она будет заявлена в соответствующей очереди для автоматического запуска подпрограмм, связанных с фазой. В этом случае соответствующий глобал останется без подпрограммы, даже если до этого содержал её. В случае сBEGIN, подпрограмма будет выполнена, и ссылка на неё будет удалена до возврата этой функции, а также до установки её прототипа. Если подпрограммаBEGINне будет достаточно построена этой функцией для готовности к выполнению, вызывающий код должен предотвратить это, дав подпрограмме другое имя.Функция возвращает указатель на созданную подпрограмму. Если подпрограмма анонимна, вызывающий код получает право собственности на одну ссылку с учтённым счётом на подпрограмму. Если подпрограмма имеет имя, вызывающий код не получает права собственности на ссылку. В большинстве таких случаев, когда подпрограмма имеет имя, не относящееся к фазе, подпрограмма будет активна в момент возврата из-за наличия в глобле, который её называет. Подпрограмма с именем, относящимся к фазе, обычно будет активна благодаря ссылке, которой владеет автоматическая очередь запуска фазы. Но подпрограмма
BEGIN, уже выполненная, скорее всего, будет уничтожена к моменту возврата этой функции, что сделает ошибочным использование вызывающим кодом возвращённого указателя. Вызывающий код несёт ответственность за то, чтобы знать, какая из этих ситуаций имеет место.CV * newXS_len_flags(const char *name, STRLEN len, XSUBADDR_t subaddr, const char *const filename, const char *const proto, SV **const_svp, U32 flags)
-
optimize_optree -
Эта функция применяет некоторые оптимизации к дереву optree сверху вниз. Она вызывается до оптимизатора peephole, который обрабатывает операции в порядке их выполнения. Обратите внимание, что finalize_optree() также выполняет поиск сверху вниз, но вызывается *после* оптимизатора peephole.
void optimize_optree(OP* o)
-
traverse_op_tree -
Возвращает следующую операцию в обходе дерева op по методу поиска в глубину, возвращая NULL, когда обход завершается.
Первый вызов должен предоставить корень дерева как top, так и o.
На данный момент она статическая, но в будущем может быть доступна в API.
OP* traverse_op_tree(OP* top, OP* o)
Упаковка и распаковка
В настоящее время в разделе "Упаковка и распаковка" есть только общедоступные элементы API.
Структуры данных Pad
-
CX_CURPAD_SAVE -
Сохранить текущий блок в структуре контекстного блока.
void CX_CURPAD_SAVE(struct context)
-
CX_CURPAD_SV -
Получить SV по смещению
poв сохранённом текущем блоке в структуре контекстного блока (может использоваться как lvalue).SV * CX_CURPAD_SV(struct context, PADOFFSET po)
-
PAD_BASE_SV -
Получить значение из слота
poв базовом (DEPTH=1) блоке списка блоков.SV * PAD_BASE_SV(PADLIST padlist, PADOFFSET po)
-
PAD_CLONE_VARS -
Клонировать переменные состояния, связанные с запуском и компиляцией блоков.
void PAD_CLONE_VARS(PerlInterpreter *proto_perl, CLONE_PARAMS* param)
-
PAD_COMPNAME_FLAGS -
Возвратить флаги для текущего имени компилируемого блока по смещению
po. Предполагается, что запись слота действительна.U32 PAD_COMPNAME_FLAGS(PADOFFSET po)
-
PAD_COMPNAME_GEN -
Номер поколения имени по смещению
poв текущем компилируемом блоке (lvalue).STRLEN PAD_COMPNAME_GEN(PADOFFSET po)
-
PAD_COMPNAME_GEN_set -
Устанавливает номер поколения имени по смещению
poв текущем блоке (lvalue) наgen.STRLEN PAD_COMPNAME_GEN_set(PADOFFSET po, int gen)
-
PAD_COMPNAME_OURSTASH -
Возвращает стек, связанный с переменной
our. Предполагается, что запись слота — это действительный лексическийour.HV * PAD_COMPNAME_OURSTASH(PADOFFSET po)
-
PAD_COMPNAME_PV -
Возвращает имя текущего компилируемого блока по смещению
po. Предполагается, что запись слота действительна.char * PAD_COMPNAME_PV(PADOFFSET po)
-
PAD_COMPNAME_TYPE -
Возвращает тип (стек) текущего имени компилируемого блока по смещению
po. Должно быть действительное имя. Возвращает null, если не типизирован.HV * PAD_COMPNAME_TYPE(PADOFFSET po)
-
PadnameIsOUR -
Является ли это переменной "our".
bool PadnameIsOUR(PADNAME * pn)
-
PadnameIsSTATE -
Является ли это переменной "state".
bool PadnameIsSTATE(PADNAME * pn)
-
PadnameOURSTASH -
Стек, в котором была объявлена эта переменная "our".
HV * PadnameOURSTASH(PADNAME * pn)
-
PadnameOUTER -
Принадлежит ли эта запись внешнему блоку. Записи, для которых это верно, часто называются «фиктивными».
bool PadnameOUTER(PADNAME * pn)
-
PadnameTYPE -
Стек, связанный с типизированной лексической переменной. Возвращает хэш
%Foo::дляmy Foo $bar.HV * PadnameTYPE(PADNAME * pn)
-
PAD_RESTORE_LOCAL -
Восстановить старый блок, сохранённый в локальной переменной
opadс помощьюPAD_SAVE_LOCAL()void PAD_RESTORE_LOCAL(PAD *opad)
-
PAD_SAVE_LOCAL -
Сохранить текущий блок в локальную переменную
opad, а затем сделать текущим блокомnpadvoid PAD_SAVE_LOCAL(PAD *opad, PAD *npad)
-
PAD_SAVE_SETNULLPAD -
Сохранить текущий блок, а затем установить его в null.
void PAD_SAVE_SETNULLPAD()
-
PAD_SETSV -
Установить слот по смещению
poв текущем блоке наsvSV * PAD_SETSV(PADOFFSET po, SV* sv)
-
PAD_SET_CUR -
Установить текущим блоком блок
nв списке блоков, сохранив предыдущий текущий блок. Н.Б. в настоящее время эта макрокоманда расширяется до строки, слишком длинной для некоторых компиляторов, поэтому лучше заменить её наSAVECOMPPAD(); PAD_SET_CUR_NOSAVE(padlist,n);void PAD_SET_CUR(PADLIST padlist, I32 n)
-
PAD_SET_CUR_NOSAVE -
как PAD_SET_CUR, но без сохранения
void PAD_SET_CUR_NOSAVE(PADLIST padlist, I32 n)
-
PAD_SV -
Получить значение по смещению
poв текущем блокеSV * PAD_SV(PADOFFSET po)
-
PAD_SVl -
Легковесная и lvalue-версия
PAD_SV. Получить или установить значение по смещениюpoв текущем блоке. В отличие отPAD_SV, не выводит диагностические сообщения при использовании -DX. Для внутреннего использования только.SV * PAD_SVl(PADOFFSET po)
-
SAVECLEARSV -
Очистить значение указанного блока при выходе из области видимости. (т.е. временное действие
my)void SAVECLEARSV(SV **svp)
-
SAVECOMPPAD -
сохранить
PL_comppadиPL_curpadvoid SAVECOMPPAD()
-
SAVEPADSV -
Сохранить слот блока (используется для восстановления после итерации)
void SAVEPADSV(PADOFFSET po)
Доступ к паролям и группам
В настоящее время в разделе "Доступ к паролям и группам" есть только общедоступные элементы API.
Пути к системным командам
В настоящее время в разделе "Пути к системным командам" есть только общедоступные элементы API.
Информация о прототипах
В настоящее время в разделе "Информация о прототипах" есть только общедоступные элементы API.
Функции REGEXP
В настоящее время в разделе "Функции REGEXP" есть только общедоступные элементы API.
Сигналы
В настоящее время в разделе "Сигналы" есть только общедоступные элементы API.
Настройка сайта
В настоящее время в разделе "Настройка сайта" есть только общедоступные элементы API.
Значения конфигурации сокетов
В настоящее время в значениях конфигурации Sockets находятся только элементы публичного API.
Фильтры источников
В настоящее время в фильтрах источников находятся только элементы публичного API.
Макросы манипуляции стеком
-
djSP -
Объявить только
SP. Это фактически идентичноdSP, и объявляет локальную копию указателя стека Perl, доступную через макросSP. См."SP" in perlapi. (Доступно для обратной совместимости с исходным кодом со старой моделью потоков (Perl 5.005)).djSP();
-
LVRET -
Истина, если этот оператор будет возвращаемым значением подпрограммы lvalue
Обработка строк
-
delimcpy_no_escape -
Скопировать буфер источника в буфер назначения, остановившись на (но не включая) первой встреченной в источнике разделительной байтовой последовательности
delim. Источник — байты междуfromиfrom_end- 1. Аналогично, dest —toдоto_end.Количество скопированных байтов записывается в
*retlen.Возвращает положение
delimв буфереfrom, но если такая последовательность не встречается доfrom_end, то возвращаетсяfrom_end, и весь буферfrom..from_end- 1 копируется.Если после копирования в буфере назначения есть место, добавляется дополнительный завершающий байт безопасности
NUL(не включен в возвращаемую длину).Ошибка возникает, если буфер назначения недостаточно велик, чтобы вместить всё, что должно быть скопировано. В этом случае значение, большее, чем
to_end-to, записывается в*retlen, и как можно больше байтов источника записывается в назначение. Отсутствие места для байта безопасностиNULне считается ошибкой.char* delimcpy_no_escape(char* to, const char* to_end, const char* from, const char* from_end, const int delim, I32* retlen)
-
quadmath_format_needed -
quadmath_format_needed()возвращает true, если строкаformat, кажется, содержит по крайней мере один спецификатор формата%[efgaEFGA], не начинающийся с префикса Q, или возвращает false в противном случае.Обнаружение спецификаторов формата не является полным обнаружением синтаксиса printf, но оно должно поймать большинство распространённых случаев.
Если возвращается true, эти аргументы должны в теории обрабатываться с помощью
quadmath_snprintf(), но в случае, если имеется более одного такого спецификатора формата (см. "quadmath_format_valid"), и если имеется что-либо помимо этого (даже один байт), они не могут быть обработаны, потому чтоquadmath_snprintf()очень строг, принимая только один спецификатор формата и ничего более. В этом случае код, вероятно, должен завершиться ошибкой.bool quadmath_format_needed(const char* format)
-
quadmath_format_valid -
quadmath_snprintf()очень строг по отношению к строкеformatи завершится ошибкой, вернув -1, если формат неверный. Он принимает ровно один спецификатор формата.quadmath_format_valid()проверяет, что предполагаемый одиночный спецификатор выглядит разумно: начинается с%, содержит только один%, заканчивается на[efgaEFGA], и имеетQперед ним. Это не полная "проверка синтаксиса printf", а только основы.Возвращает true, если формат корректен, и false, если нет.
См. также "quadmath_format_needed".
bool quadmath_format_valid(const char* format)
Флаги SV
-
SVt_INVLIST -
Флаг типа для скаляров. См. "svtype" в perlapi.
Обработка SV
-
PL_Sv -
Временный SV для любых временных нужд. В основном используется в качестве резервного варианта макросами на платформах, где "PERL_USE_GCC_BRACE_GROUPS" в perlapi> недоступен и которые в противном случае оценивали бы свой параметр SV более одного раза.
PL_Sv
-
sv_2bool -
Этот макрос используется только
sv_true()или его макро-эквивалентом, и только если аргумент последнего не являетсяSvPOK,SvIOKилиSvNOK. Вызываетsv_2bool_flagsс флагомSV_GMAGIC.bool sv_2bool(SV *const sv)
-
sv_2bool_flags -
Эта функция используется только
sv_true()и друзьями, и только если аргумент последнего не являетсяSvPOK,SvIOKилиSvNOK. Если флаги содержатSV_GMAGIC, то сначала выполняетсяmg_get().bool sv_2bool_flags(SV *sv, I32 flags)
-
sv_2num -
ПРИМЕЧАНИЕ:
sv_2numявляется экспериментальным и может быть изменён или удалён без предварительного уведомления.Возвращает SV с числовым значением исходного SV, выполняя необходимые преобразования ссылок или перегрузки. Отзывается, что вызывающий метод должен был уже обработать get-magic.
SV* sv_2num(SV *const sv)
-
sv_2pvbyte_nolen -
Возвращает указатель на байтовое представление SV. Может привести к понижению SV с UTF-8 в качестве побочного эффекта.
Обычно обращается через макрос
SvPVbyte_nolen.char* sv_2pvbyte_nolen(SV* sv)
-
sv_2pvutf8_nolen -
Возвращает указатель на представление SV в кодировке UTF-8. Может привести к повышению SV до UTF-8 в качестве побочного эффекта.
Обычно обращается через макрос
SvPVutf8_nolen.char* sv_2pvutf8_nolen(SV* sv)
-
sv_2pv_flags -
Возвращает указатель на строковое значение SV и устанавливает
*lpна его длину. Если в флагах установлен битSV_GMAGIC, то сначала выполняетсяmg_get(). Преобразуетsvв строку при необходимости. Обычно вызывается через макросSvPV_flags.sv_2pv()иsv_2pv_nomgобычно заканчиваются здесь.char* sv_2pv_flags(SV *const sv, STRLEN *const lp, const U32 flags)
-
sv_2pv_nolen -
Аналогично
sv_2pv(), но не возвращает длину. Вы обычно должны использовать макрос-обёрткуSvPV_nolen(sv).char* sv_2pv_nolen(SV* sv)
-
sv_add_arena -
Принимая блок памяти, связывает его с началом списка аренов и разбивает его на список свободных SV.
void sv_add_arena(char *const ptr, const U32 size, const U32 flags)
-
sv_clean_all -
Уменьшает refcnt каждого оставшегося SV, что может вызвать очистку. Возможно, эта функция должна вызываться несколько раз, чтобы освободить SV, которые находятся в сложных взаимоссылочных иерархиях.
I32 sv_clean_all()
-
sv_clean_objs -
Попытка уничтожить все объекты, ещё не освобождённые.
void sv_clean_objs()
-
sv_free_arenas -
Освободить память, используемую всеми аренами. Обратите внимание, что все отдельные заголовки и тела SV внутри аренов должны быть уже освобождены.
void sv_free_arenas()
-
sv_grow -
Расширяет буфер символов в SV. При необходимости использует
sv_unrefи повышает SV доSVt_PV. Возвращает указатель на буфер символов. Используйте обёрткуSvGROWвместо этого.char* sv_grow(SV *const sv, STRLEN newlen)
-
sv_iv -
DEPRECATED!Планируется удалитьsv_ivиз будущей версии Perl. Не используйте его в новом коде; удалите из существующего кода.Внутренняя реализация макроса
SvIVxдля компиляторов, которые не могут справиться со сложными выражениями макросов. Всегда используйте макрос вместо этого.IV sv_iv(SV* sv)
-
sv_newref -
Увеличить счётчик ссылок SV. Используйте обёртку
SvREFCNT_inc()вместо этого.SV* sv_newref(SV *const sv)
-
sv_nv -
DEPRECATED!Планируется удалитьsv_nvиз будущей версии Perl. Не используйте его в новом коде; удалите из существующего кода.Внутренняя реализация макроса
SvNVxдля компиляторов, которые не могут справиться со сложными выражениями макросов. Всегда используйте макрос вместо этого.NV sv_nv(SV* sv)
-
sv_pv -
Используйте макрос
SvPV_nolenвместо этогоchar* sv_pv(SV *sv)
-
sv_pvbyte -
Используйте
SvPVbyte_nolenвместо этого.char* sv_pvbyte(SV *sv)
-
sv_pvbyten -
DEPRECATED!Планируется удалитьsv_pvbytenиз будущей версии Perl. Не используйте его в новом коде; удалите из существующего кода.Внутренняя реализация макроса
SvPVbyteдля компиляторов, которые не могут справиться со сложными выражениями макросов. Всегда используйте макрос вместо этого.char* sv_pvbyten(SV *sv, STRLEN *lp)
-
sv_pvbyten_force -
Бэкенд для макроса
SvPVbytex_force. Всегда используйте макрос вместо этого. Если SV нельзя понизить до UTF-8, возникает ошибка.char* sv_pvbyten_force(SV *const sv, STRLEN *const lp)
-
sv_pvn -
DEPRECATED!Планируется удалитьsv_pvnиз будущей версии Perl. Не используйте его в новом коде; удалите из существующего кода.Внутренняя реализация макроса
SvPVдля компиляторов, которые не могут справиться со сложными выражениями макросов. Всегда используйте макрос вместо этого.char* sv_pvn(SV *sv, STRLEN *lp)
-
sv_pvn_force -
Получить осмысленную строку из SV каким-либо способом. Внутренняя реализация макроса
SvPV_forceдля компиляторов, которые не могут справиться со сложными выражениями макросов. Всегда используйте макрос вместо этого.char* sv_pvn_force(SV* sv, STRLEN* lp)
-
sv_pvutf8 -
Используйте макрос
SvPVutf8_nolenвместо этогоchar* sv_pvutf8(SV *sv)
-
sv_pvutf8n -
DEPRECATED!Планируется удалитьsv_pvutf8nиз будущей версии Perl. Не используйте его в новом коде; удалите из существующего кода.Внутренняя реализация макроса
SvPVutf8для компиляторов, которые не могут справиться со сложными выражениями макросов. Всегда используйте макрос вместо этого.char* sv_pvutf8n(SV *sv, STRLEN *lp)
-
sv_pvutf8n_force -
Бэкенд для макроса
SvPVutf8x_force. Всегда используйте макрос вместо него.char* sv_pvutf8n_force(SV *const sv, STRLEN *const lp)
-
sv_taint -
Пометить SV как затронутый. Используйте
SvTAINTED_onвместо этого.void sv_taint(SV* sv)
-
sv_tainted -
Проверить SV на наличие затронутых данных. Используйте
SvTAINTEDвместо этого.bool sv_tainted(SV *const sv)
-
SvTHINKFIRST -
Быстрая проверка флага, чтобы определить, нужно ли передавать
svвsv_force_normal, чтобы его "понизить" перед тем, какSvIVXилиSvPVXсмогут быть изменены напрямую.Например, если ваш скаляр — ссылка, и вы хотите изменить слот
SvIVX, вы не можете просто сделатьSvROK_off, так как это приведет к утечке референта.Это используется внутри различных функций модификации sv, таких как
sv_setsv,sv_setivиsv_pvn_force.Один случай, который эта функция не обрабатывает, — это gv без установленного SvFAKE. После
if (SvTHINKFIRST(gv)) sv_force_normal(gv);он по-прежнему будет gv.
SvTHINKFIRSTиногда выдаёт ложные срабатывания. В таких случаяхsv_force_normalничего не делает.U32 SvTHINKFIRST(SV *sv)
-
sv_true -
Возвращает true, если SV имеет значение true по правилам Perl. Используйте макрос
SvTRUE, который может вызватьsv_true()или использовать встроенную версию.I32 sv_true(SV *const sv)
-
sv_untaint -
Снять метку затронутости с SV. Используйте
SvTAINTED_offвместо этого.void sv_untaint(SV *const sv)
-
sv_uv -
DEPRECATED!Планируется удалитьsv_uvиз будущей версии Perl. Не используйте её в новом коде; удалите из существующего.Приватная реализация макроса
SvUVxдля компиляторов, которые не могут справиться со сложными выражениями макроса. Всегда используйте макрос вместо него.UV sv_uv(SV* sv)
Время
В данный момент в Time находятся только элементы публичного API.
Имена типов
В данный момент в разделе "Имена типов" находятся только элементы публичного API.
Поддержка Unicode
-
bytes_from_utf8_loc -
ПРИМЕЧАНИЕ:
bytes_from_utf8_locявляется экспериментальным и может быть изменён или удалён без предварительного уведомления.Подобно
"bytes_from_utf8" in perlapi(), но принимает дополнительный параметр — указатель, куда сохранить позицию первого символа в"s", который нельзя преобразовать в не-UTF8.Если этот параметр равен
NULL, эта функция ведет себя идентичноbytes_from_utf8.В противном случае, если
*is_utf8pравно 0 на входе, функция ведет себя идентичноbytes_from_utf8, кроме того, она также устанавливает*first_non_downgradableвNULL.В противном случае функция возвращает только что созданную строку, завершающуюся
NUL, содержащую не-UTF8 эквивалент преобразуемой первой части"s".*lenpустанавливается в её длину, не включая завершающийNUL. Если вся входная строка была преобразована,*is_utf8pустанавливается в ложное значение, а*first_non_downgradableустанавливается вNULL.В противном случае,
*first_non_downgradableустанавливается на первый байт первого символа в исходной строке, который не был преобразован.*is_utf8pне изменяется. Обратите внимание, что новая строка может иметь длину 0.Другой способ взглянуть на это: если
*first_non_downgradableне равноNULLи*is_utf8pравно TRUE, эта функция начинает с начала"s"и преобразует как можно больше символов в нём, останавливаясь на первом, который нельзя преобразовать в не-UTF-8.*first_non_downgradableустанавливается на него. Функция возвращает преобразованную часть в только что созданной строке, завершающейсяNUL, и*lenpустанавливается на её длину, не включая завершающийNUL. Если первый символ исходной строки не был преобразован,*lenpбудет 0, а новая строка будет содержать только одинNUL. Если вся входная строка была преобразована,*is_utf8pустанавливается в FALSE, а*first_non_downgradableустанавливается вNULL.После успешного возврата количество вариантов в преобразованной части строки можно вычислить, сохранив значение
*lenpперед вызовом и вычитав из него значение*lenpпосле вызова.U8* bytes_from_utf8_loc(const U8 *s, STRLEN *lenp, bool *is_utf8p, const U8 ** first_unconverted)
-
find_uninit_var -
ПРИМЕЧАНИЕ:
find_uninit_varявляется экспериментальным и может быть изменён или удалён без предварительного уведомления.Найти имя неопределённой переменной (если она есть), которая вызвала у оператора предупреждение "Использование неинициализированного значения". Если соответствие истинно, возвращать имя только если его значение совпадает с
uninit_sv. Грубо говоря, если унарный оператор (например,OP_COS) генерирует предупреждение, то обращение к непосредственному потомку оператора может датьOP_PADSVилиOP_GV, которые указывают имя неопределённой переменной. С другой стороны, сOP_ADDесть два ветвления, поэтому мы выводим имя переменной только если получаем точное совпадение.desc_pуказывает на указатель строки, содержащий описание оператора. Он может быть обновлён при необходимости.Имя возвращается как временный SV.
Предполагается, что
PL_opявляется оператором, первоначально вызвавшим ошибку, и чтоPL_comppad/PL_curpadуказывает на текущий выполняемый блок.SV* find_uninit_var(const OP *const obase, const SV *const uninit_sv, bool match, const char **desc_p)
-
isSCRIPT_RUN -
Возвращает булево значение, указывающее, образует ли последовательность байтов от
sдо, но не включаяsend, "запуск скрипта".utf8_targetравно TRUE, если последовательность, начинающаяся сs, должна обрабатываться как UTF-8. Точнее, за исключением двух вырожденных случаев, описанных ниже, эта функция возвращает TRUE, если все кодовые точки в ней взяты из любой комбинации трёх "скриптов", заданных свойством "Script Extensions" Unicode: Common, Inherited и, возможно, ещё одного. Кроме того, все десятичные цифры должны быть взяты из одной последовательной группы из 10.Например, если все символы в последовательности — греческие, или Common, или Inherited, эта функция вернёт TRUE, при условии, что все десятичные цифры в ней взяты из одной группы цифр в Common. (Это цифры ASCII "0".."9" и дополнительно группа полных форм этих цифр, а также несколько других, используемых в математической нотации.) Для скриптов (в отличие от греческого), у которых определены собственные цифры, функция примет либо цифры из этого набора, либо из наборов цифр Common, но не комбинацию обоих. Некоторые скрипты, такие как арабский, имеют более одного набора цифр. Все цифры должны быть взяты из одного набора, чтобы функция вернула TRUE.
*ret_script, еслиret_scriptне NULL, при возврате TRUE будет содержать найденный скрипт, используя типSCX_enum. Его значение будетSCX_INVALID, если функция вернёт FALSE.Если последовательность пуста, возвращается TRUE, но
*ret_script(если запрошено) будетSCX_INVALID.Если последовательность содержит одну кодовую точку, которая не назначена символу в используемой версии Unicode, функция вернёт TRUE, а скрипт будет
SCX_Unknown. Любая другая комбинация неназначенных кодовых точек во входной последовательности заставит функцию рассматривать вход как не являющийся запуском скрипта.Возвращённый скрипт будет
SCX_Inherited, если все кодовые точки в нём взяты из скрипта Inherited.В противном случае, возвращаемый скрипт будет
SCX_Common, если все кодовые точки в нём взяты из скриптов Inherited или Common.bool isSCRIPT_RUN(const U8 *s, const U8 *send, const bool utf8_target)
-
is_utf8_non_invariant_string -
Возвращает TRUE, если "is_utf8_invariant_string" в perlapi возвращает FALSE для первых
lenбайтов строкиs, но они тем не менее являются допустимым Perl-расширенным UTF-8; в противном случае возвращает FALSE.Возврат TRUE означает, что по крайней мере одна кодовая точка, представленная последовательностью, либо является широким символом, не представимым одним байтом, либо её представление отличается в зависимости от того, закодирована ли последовательность в UTF-8 или нет.
См. также
"is_utf8_invariant_string" in perlapi,"is_utf8_string" in perlapibool is_utf8_non_invariant_string(const U8* const s, STRLEN len)
-
report_uninit -
Вывод соответствующего предупреждения "Использование неинициализированной переменной".
void report_uninit(const SV *uninit_sv)
-
utf8n_to_uvuni -
DEPRECATED!Планируется удалитьutf8n_to_uvuniиз будущей версии Perl. Не используйте её в новом коде; удалите из существующего.Вместо этого используйте "utf8_to_uvchr_buf" в perlapi или в редких случаях "utf8n_to_uvchr" в perlapi.
Эта функция была полезна для кода, который хотел обрабатывать как EBCDIC, так и ASCII платформы с Unicode свойствами, но начиная с Perl v5.20, различия между платформами в основном скрыты от большинства кода, поэтому эта функция вряд ли будет тем, что вам нужно. Если вам нужна именно эта функциональность, используйте вместо этого
NATIVE_TO_UNI(utf8_to_uvchr_buf(...))илиNATIVE_TO_UNI(utf8n_to_uvchr(...)).UV utf8n_to_uvuni(const U8 *s, STRLEN curlen, STRLEN *retlen, U32 flags)
-
utf8_to_uvuni -
DEPRECATED!Планируется удалитьutf8_to_uvuniиз будущей версии Perl. Не используйте её в новом коде; удалите из существующего кода.Возвращает код Юникода первого символа в строке
s, которая предполагается закодированной в UTF-8;retlenбудет установлено в длину этого символа в байтах.Обнаружение некоторых, но не всех, некорректных кодировок UTF-8, а, в некоторых случаях, некорректный ввод может привести к чтению за пределами буфера ввода, что является одной из причин устаревания этой функции. Другая причина в том, что в чрезвычайно ограниченных случаях следует учитывать разницу между кодами Юникода и кодами локальной кодировки. Обратитесь к "utf8_to_uvuni_buf" для альтернатив.
Если
sуказывает на одну из обнаруженных некорректных кодировок, и включены предупреждения UTF8, возвращается ноль, а*retlenустанавливается (еслиretlenне указывает на NULL) в -1. Если эти предупреждения выключены, вычисляемое значение, если оно определено (или ЗАМЕЩАЮЩИЙ СИМВОЛ ЮНИКОДА, если нет), возвращается без особых уведомлений, и*retlenустанавливается (еслиretlenне NULL), так что (s+*retlen) является следующей возможной позицией вs, которая может начинаться с правильного символа. См. "utf8n_to_uvchr" в perlapi для подробностей о возвращаемом ЗАМЕЩАЮЩЕМ СИМВОЛЕ ЮНИКОДА.UV utf8_to_uvuni(const U8 *s, STRLEN *retlen)
-
utf8_to_uvuni_buf -
DEPRECATED!Планируется удалитьutf8_to_uvuni_bufиз будущей версии Perl. Не используйте её в новом коде; удалите из существующего кода.В очень редких случаях код может потребоваться работать с кодами Юникода (в отличие от кодов локальной кодировки). В этих редких случаях используйте
NATIVE_TO_UNI(utf8_to_uvchr_buf(...))вместо неё. Если вы не уверены, что это один из таких случаев, считайте, что это не так, и используйте обычнуюutf8_to_uvchr_buf.Возвращает код Юникода (не локальной кодировки) первого символа в строке
s, которая предполагается закодированной в UTF-8;sendуказывает на позицию, следующую за концомs.retlenбудет установлено в длину этого символа в байтах.Если
sне указывает на правильный символ UTF-8, и включены предупреждения UTF8, возвращается ноль, а*retlenустанавливается (еслиretlenне NULL) в -1. Если эти предупреждения выключены, вычисляемое значение, если оно определено (или ЗАМЕЩАЮЩИЙ СИМВОЛ ЮНИКОДА, если нет), возвращается без особых уведомлений, а*retlenустанавливается (еслиretlenне NULL), так что (s+*retlen) указывает на следующую возможную позицию вs, которая может начинаться с правильного символа. См. "utf8n_to_uvchr" в perlapi для подробностей о возвращаемом ЗАМЕЩАЮЩЕМ СИМВОЛЕ ЮНИКОДА.UV utf8_to_uvuni_buf(const U8 *s, const U8 *send, STRLEN *retlen)
-
uvoffuni_to_utf8_flags -
ЭТУ ФУНКЦИЮ СЛЕДУЕТ ИСПОЛЬЗОВАТЬ ТОЛЬКО В ОЧЕНЬ СПЕЦИАЛЬНЫХ СЛУЧАЯХ. Вместо этого Почти весь код должен использовать "uvchr_to_utf8" в perlapi или "uvchr_to_utf8_flags" в perlapi.
Эта функция подобна им, но входные данные — это строгий код Юникода (в отличие от кода локальной кодировки). Только в очень редких случаях код не должен использовать код локальной кодировки.
Для подробностей см. описание "uvchr_to_utf8_flags" в perlapi.
U8* uvoffuni_to_utf8_flags(U8 *d, UV uv, const UV flags)
-
uvuni_to_utf8_flags -
DEPRECATED!Планируется удалитьuvuni_to_utf8_flagsиз будущей версии Perl. Не используйте её в новом коде; удалите из существующего кода.Вместо этого, почти наверняка, вам нужно использовать "uvchr_to_utf8" в perlapi или "uvchr_to_utf8_flags" в perlapi.
Эта функция — устаревшая синоним "uvoffuni_to_utf8_flags", которая сама по себе, хотя и не устаревшая, должна использоваться только в отдельных случаях. Эти функции были полезны для кода, который хотел обрабатывать как EBCDIC, так и ASCII платформы с свойствами Юникода, но начиная с Perl v5.20, различия между платформами в основном скрыты от большинства кодов, поэтому эта функция вряд ли будет тем, что вам нужно.
U8* uvuni_to_utf8_flags(U8 *d, UV uv, UV flags)
-
valid_utf8_to_uvchr -
Подобно
"utf8_to_uvchr_buf" in perlapi, но следует вызывать только тогда, когда известно, что следующий символ в строке UTF-8sимеет правильную форму (например, он проходит"isUTF8_CHAR" in perlapi. Допускаются суррогаты, непечатные символы и символы, не относящиеся к Юникоду.UV valid_utf8_to_uvchr(const U8 *s, STRLEN *retlen)
-
variant_under_utf8_count -
Эта функция анализирует последовательность байтов между
sиe, которые предполагаются закодированными в ASCII/Latin1, и возвращает количество байтов, которые изменились бы, если бы строка была преобразована в UTF-8. Из-за особенностей UTF-8 каждый из них занимал бы два байта вместо одного в исходной строке. Таким образом, эта функция возвращает точное количество байтов, на которое увеличится строка при переводе в UTF-8.В отличие от большинства других функций, содержащих
utf8в своём названии, входные данные этой функции НЕ являются строкой UTF-8. Название функции немного необычное, чтобы подчеркнуть это.Эта функция является внутренней для Perl, потому что khw считает, что любой XS-код, который захочет её использовать, вероятно, работает слишком близко к внутренностям. Предоставление валидного примера использования может изменить это.
См. также
"is_utf8_invariant_string" in perlapiи"is_utf8_invariant_string_loc" in perlapi,Size_t variant_under_utf8_count(const U8* const s, const U8* const e)
Функции-утилиты
В Функциях-утилитах пока представлены только общедоступные элементы API.
Версионирование
В Версионировании пока представлены только общедоступные элементы API.
Предупреждения и завершения работы
-
PL_dowarn -
C-переменная, которая примерно соответствует предупреждению Perl's
$^W. Однако,$^Wобрабатывается как булево значение, тогда какPL_dowarn— это набор флаговых битов.В многопоточных Perl, каждая нить имеет независимую копию этой переменной; каждая инициализируется при создании значением копии нити, создавшей её.
U8 PL_dowarn
XS
В XS пока представлены только общедоступные элементы API.
Неописанные элементы
Следующие функции в настоящее время не документированы. Если вы используете одну из них, вы можете рассмотреть возможность создания и отправки документации к ней.
abort_execution
add_cp_to_invlist
_add_range_to_invlist
alloc_LOGOP
allocmy
amagic_cmp
amagic_cmp_desc
amagic_cmp_locale
amagic_cmp_locale_desc
amagic_is_enabled
amagic_i_ncmp
amagic_i_ncmp_desc
amagic_ncmp
amagic_ncmp_desc
append_utf8_from_native_byte
apply
ASCII_TO_NEED
av_arylen_p
av_extend_guts
av_iter_p
av_nonelem
av_reify
bind_match
boot_core_mro
boot_core_PerlIO
boot_core_UNIVERSAL
_byte_dump_string
cando
cast_i32
cast_iv
cast_ulong
cast_uv
check_utf8_print
ck_anoncode
ck_backtick
ck_bitop
ck_cmp
ck_concat
ck_defined
ck_delete
ck_each
ck_entersub_args_core
ck_eof
ck_eval
ck_exec
ck_exists
ck_ftst
ck_fun
ck_glob
ck_grep
ck_index
ck_isa
ck_join
ck_length
ck_lfun
ck_listiob
ck_match
ck_method
ck_null
ck_open
ck_prototype
ck_readline
ck_refassign
ck_repeat
ck_require
ck_return
ck_rfun
ck_rvconst
ck_sassign
ck_select
ck_shift
ck_smartmatch
ck_sort
ck_spair
ck_split
ck_stringify
ck_subr
ck_substr
ck_svconst
ck_tell
ck_trunc
ck_trycatch
ckwarn
ckwarn_d
closest_cop
cmpchain_extend
cmpchain_finish
cmpchain_start
cmp_desc
cmp_locale_desc
cntrl_to_mnemonic
coresub_op
create_eval_scope
croak_caller
croak_memory_wrap
croak_no_mem
croak_popstack
csighandler
csighandler1
csighandler3
current_re_engine
custom_op_get_field
cv_ckproto_len_flags
cv_clone_into
cv_const_sv_or_av
cvgv_from_hek
cvgv_set
cvstash_set
cv_undef_flags
cx_dump
cx_dup
cxinc
cx_popblock
cx_popeval
cx_popformat
cx_popgiven
cx_poploop
cx_popsub
cx_popsub_args
cx_popsub_common
cx_popwhen
cx_pushblock
cx_pusheval
cx_pushformat
cx_pushgiven
cx_pushloop_for
cx_pushloop_plain
cx_pushsub
cx_pushtry
cx_pushwhen
cx_topblock
deb_stack_all
defelem_target
delete_eval_scope
despatch_signals
die_unwind
do_aexec
do_aexec5
do_eof
does_utf8_overflow
do_exec
do_exec3
dofile
do_gvgv_dump
do_gv_dump
do_hv_dump
doing_taint
do_ipcctl
do_ipcget
do_magic_dump
do_msgrcv
do_msgsnd
do_ncmp
do_open6
do_open_raw
do_op_dump
do_pmop_dump
do_print
do_readline
do_seek
do_semop
do_shmio
do_sv_dump
do_sysseek
do_tell
do_trans
do_uniprop_match
do_vecget
do_vecset
do_vop
drand48_init_r
drand48_r
dtrace_probe_call
dtrace_probe_load
dtrace_probe_op
dtrace_probe_phase
dump_all_perl
dump_indent
dump_packsubs_perl
dump_sub_perl
dump_sv_child
dump_vindent
dup_warnings
emulate_cop_io
find_first_differing_byte_pos
find_lexical_cv
find_runcv_where
find_script
foldEQ_latin1
foldEQ_latin1_s2_folded
foldEQ_utf8_flags
_force_out_malformed_utf8_message
form_alien_digit_msg
form_cp_too_large_msg
free_tied_hv_pool
free_tmps
get_and_check_backslash_N_name
get_db_sub
get_debug_opts
get_deprecated_property_msg
getenv_len
get_hash_seed
get_invlist_iter_addr
get_invlist_offset_addr
get_invlist_previous_index_addr
get_no_modify
get_opargs
get_prop_definition
get_prop_values
get_regclass_nonbitmap_data
get_regex_charset_name
get_re_arg
get_re_gclass_nonbitmap_data
gimme_V
grok_bin_oct_hex
grok_bslash_c
grok_bslash_o
grok_bslash_x
gv_check
gv_fetchmeth_internal
gv_override
gv_setref
gv_stashpvn_internal
hfree_next_entry
hv_backreferences_p
hv_common
hv_common_key_len
hv_kill_backrefs
hv_placeholders_p
hv_pushkv
hv_undef_flags
init_argv_symbols
init_constants
init_dbargs
init_debugger
init_i18nl10n
init_i18nl14n
init_named_cv
init_uniprops
_inverse_folds
invert
invlist_array
invlist_clear
invlist_clone
invlist_contents
_invlistEQ
invlist_extend
invlist_highest
invlist_is_iterating
invlist_iterfinish
invlist_iterinit
invlist_iternext
invlist_lowest
invlist_max
invlist_previous_index
invlist_set_len
invlist_set_previous_index
invlist_trim
_invlist_array_init
_invlist_contains_cp
_invlist_dump
_invlist_intersection
_invlist_intersection_maybe_complement_2nd
_invlist_invert
_invlist_len
_invlist_search
_invlist_subtract
_invlist_union
_invlist_union_maybe_complement_2nd
invmap_dump
io_close
isFF_OVERLONG
is_grapheme
is_invlist
is_utf8_char_helper
is_utf8_common
is_utf8_overlong_given_start_byte_ok
_is_cur_LC_category_utf8
_is_in_locale_category
_is_uni_FOO
_is_uni_perl_idcont
_is_uni_perl_idstart
_is_utf8_FOO
_is_utf8_perl_idcont
_is_utf8_perl_idstart
jmaybe
keyword
keyword_plugin_standard
list
load_charnames
localize
lossless_NV_to_IV
magic_cleararylen_p
magic_clearenv
magic_clearisa
magic_clearpack
magic_clearsig
magic_clear_all_env
magic_copycallchecker
magic_existspack АВТОРЫ
Система автоматической генерации документации была первоначально добавлена в ядро Perl Беньямин Штуль. Документация — от того, кто любезно предоставил документацию своих функций.
См. также
config.h, perlapi, perlapio, perlcall, perlclib, perlfilter, perlguts, perlinterp, perliol, perlmroapi, perlreguts, perlxs
© 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/perlintern