АнглийскийФранцузскийИспанский

Значок OnWorks

perlintern - Интернет в облаке

Запустите perlintern в бесплатном хостинг-провайдере OnWorks через Ubuntu Online, Fedora Online, онлайн-эмулятор Windows или онлайн-эмулятор MAC OS

Это команда perlintern, которую можно запустить в бесплатном хостинг-провайдере OnWorks, используя одну из наших многочисленных бесплатных онлайн-рабочих станций, таких как Ubuntu Online, Fedora Online, онлайн-эмулятор Windows или онлайн-эмулятор MAC OS.

ПРОГРАММА:

ИМЯ


perlintern - автоматически сгенерированная документация чисто внутренних функций Perl

ОПИСАНИЕ


Этот файл представляет собой автоматически созданную документацию функций интерпретатора Perl, которые
задокументированы с использованием внутреннего формата документации Perl, но не отмечены как часть
Perl API. Другими словами, для использование in расширения!

Compile времени сфера крючки


Бхкентри
ПРИМЕЧАНИЕ: эта функция является экспериментальной и может быть изменена или удалена без предварительного уведомления.

Вернуть запись из структуры BHK. , которые токен препроцессора, указывающий
какую запись вернуть. Если соответствующий флаг не установлен, возвращается NULL.
Тип возвращаемого значения зависит от того, какую запись вы запрашиваете.

void * BhkENTRY (BHK * hk, который)

БхкФЛАГИ
ПРИМЕЧАНИЕ: эта функция является экспериментальной и может быть изменена или удалена без предварительного уведомления.

Верните флаги BHK.

U32 BhkFLAGS (BHK * hk)

CALL_BLOCK_HOOKS
ПРИМЕЧАНИЕ: эта функция является экспериментальной и может быть изменена или удалена без предварительного уведомления.

Вызовите все зарегистрированные блочные перехватчики типа , которые. , которые это предварительная обработка
токен; тип аргумент зависит от , которые.

void CALL_BLOCK_HOOKS (который, аргумент)

На заказ Операторы


core_prototype
Эта функция назначает прототип названной основной функции "sv" или
новый смертный SV, если "sv" - ПУСТО. Он возвращает измененный "sv" или NULL, если ядро
функция не имеет прототипа. «code» - это код, возвращаемый функцией «keyword ()». Это должно
не быть равным 0.

SV * core_prototype (SV * sv, const char * name,
const int код,
int * const опнум)

CV Манипуляция функции


docatch Проверяет случаи 0 или 3 для cur_env.je_ret, используется только внутри контекста eval.

0 используется как continue внутри eval,

3 используется для кубика, пойманного внутренним eval - продолжить внутренний цикл

См. Cop.h: je_mustcatch, если на любом уровне выполнения установлено значение TRUE, означает, что eval ops должен
установить локальный jmpenv для обработки ловушек исключений.

OP * docatch (OP * o)

CV ссылка подсчет и CvВНЕШНИЙ


CvWEAKOUTSIDE
Каждое CV имеет указатель «CvOUTSIDE ()» на его лексически включающее CV (если есть).
Поскольку указатели на анонимные под-прототипы хранятся в слотах «&», это
можно получить круговую ссылку, при которой родитель указывает на ребенка и
наоборот. Чтобы избежать последующей утечки памяти, мы не увеличиваем ссылку
количество резюме, на которое указывает "CvOUTSIDE" в one конкретный пример , что
У родительского элемента есть слот «&», указывающий на нас. В этом случае мы устанавливаем
Флаг "CvWEAKOUTSIDE" у ребенка. Это позволяет определить, при каких условиях
обстоятельства, мы должны уменьшить refcount родителя при освобождении
ребенок.

Есть еще одна сложность с незакрытыми анонимными подпрограммами (т. Е. Те, которые
не ссылайтесь на какие-либо лексические элементы вне этого подпункта). В этом случае анонимный
прототип используется совместно, а не клонируется. Это приводит к тому, что
родитель может быть освобожден, пока есть активные дочерние элементы, например

НАЧАТЬ {$ a = sub {eval '$ x'}}

В этом случае BEGIN освобождается сразу после выполнения, поскольку нет
активные ссылки на него: для под-прототипа anon установлено значение "CvWEAKOUTSIDE", так как он
не закрытие, а $ a указывает на одно и то же резюме, поэтому он не влияет на BEGIN
refcount тоже. Когда выполняется $ a, "eval '$ x'" вызывает цепочку
"CvOUTSIDE" будет следовать, и будет осуществлен доступ к освобожденному BEGIN.

Чтобы избежать этого, всякий раз, когда CV и связанная с ним панель освобождаются, любые записи «&» в
панель явно удаляется с панели, и если счетчик ссылок указанного
anon sub по-прежнему положительный, тогда "CvOUTSIDE" этого ребенка устанавливается так, чтобы указывать на его
дедушка и бабушка. Это произойдет только в одном конкретном случае незакрытия.
анон-прототип, имеющий одну или несколько активных ссылок (например, $ a выше).

Еще одна вещь, которую следует учитывать, заключается в том, что резюме может быть просто неопределенным, а не
освобожден, например, "undef & foo". В этом случае его refcount может не достигнуть нуля, но
мы по-прежнему удаляем его площадку и его "CvROOT" и т. д. Поскольку различные дочерние элементы могут по-прежнему
имеют их "CvOUTSIDE", указывающие на это неопределенное резюме, мы сохраняем свое собственное "CvOUTSIDE"
пока, так что цепочка лексических значений не разорвана. Например,
следующее должно напечатать 123:

мой $ x = 123;
sub tmp {sub {eval '$ x'}}
мой $ a = tmp ();
undef & tmp;
напечатать $ a -> ();

bool CvWEAKOUTSIDE (CV * CV)

Встраивание функции


cv_dump вывести содержимое резюме

void cv_dump (CV * cv, const char * title)

cv_forget_slab
Когда в резюме есть счетчик ссылок на плите (CvSLABBED), он отвечает за
убедившись, что он освобожден. (Следовательно, ни в каких двух резюме никогда не должно быть ссылок на
той же плиты.) Резюме нужно только ссылаться на плиту во время компиляции. Один раз
он скомпилирован и прикреплен CvROOT, он завершил свою работу, поэтому он может забыть
плита.

недействительным cv_forget_slab (CV * CV)

do_dump_pad
Выгрузить содержимое списка контактов

void do_dump_pad (уровень I32, файл PerlIO *,
PADLIST * padlist, целое полное)

Padlist_dup
Дублирует площадку.

PADLIST * padlist_dup (PADLIST * srcpad,
CLONE_PARAMS * параметр)

Padnamelist_dup
Дублирует список названий пэдов.

PADNAMELIST * padnamelist_dup (PADNAMELIST * srcpad,
CLONE_PARAMS * параметр)

Padname_dup
Дублирует имя пэда.

PADNAME * padname_dup (PADNAME * src, CLONE_PARAMS * param)

Pad_alloc_name
Выделяет место в компилируемой в данный момент панели (через "pad_alloc" в perlapi) и
затем сохраняет имя для этой записи. имя принимается и становится записью имени; Это
уже должен содержать строку имени. типесташ и наш и
флаг "padadd_STATE" добавляется в имя. Ни одна другая обработка
"pad_add_name_pvn" в perlapi готово. Возвращает смещение выделенной контактной площадки.
слот.

PADOFFSET pad_alloc_name (PADNAME * имя, флаги U32,
HV * typestash, HV * ourstash)

Pad_block_start
Обновите переменные состояния компиляции пэда при входе в новый блок.

void pad_block_start (целое полное)

Pad_check_dup
Проверьте наличие повторяющихся деклараций: сообщите о любом из:

* a my в текущей области с тем же именем;
* наш (где угодно в блокноте) с тем же именем и
тот же тайник, что и C

«is_our» указывает, что проверяемое имя - это «наше» объявление.

void pad_check_dup (PADNAME * имя, флаги U32,
const HV * ourstash)

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

Возвращает смещение в нижней панели lex или поддельного lex. cv - это резюме в
который запускает поиск, а seq - это текущий cop_seq, с которым нужно сопоставить. Если
предупреждение верно, выведите соответствующие предупреждения. Out_ * vars возвращают значения, и поэтому
являются указателями на то, где должны храниться возвращаемые значения. out_capture, если не
null, запрашивает захват самого внутреннего экземпляра лексического слова; out_name - это
установить на самое внутреннее совпадающее имя пэда или поддельное имя пэда; out_flags возвращает
флаги, обычно связанные с полем PARENT_FAKELEX_FLAGS поддельного имени пэда.

Обратите внимание, что pad_findlex () рекурсивно; он проходит вверх по цепочке резюме, затем идет
отступайте, добавляя фальшивые записи по ходу дела. Так должно быть, потому что подделка
имена в анонимных прототипах должны сохранять в xlow индекс в родительской панели.

PADOFFSET pad_findlex (const char * namepv,
СТРЛЕН namelen, флаги U32,
const CV * cv, U32 seq, int warn,
SV ** out_capture,
PADNAME ** out_name,
int * out_flags)

Pad_fixup_inner_anons
Для любых анонимных резюме в блокноте измените CvOUTSIDE этого резюме с old_cv на new_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
Очистка в конце области видимости во время компиляции: установите максимальный номер последовательности для лексических элементов в
этот объем и предупреждать о любых лексических словах, которые никогда не были введены.

пустота pad_leavemy ()

Pad_push
Вставьте новую рамку пэда в список пэдов, если пэд еще не находится на этой глубине,
в этом случае не создавайте новый. Затем присвойте новому пэду @_ в
нулевой слот.

void pad_push (PADLIST * padlist, int depth)

Pad_reset
Отметить все текущие временные файлы для повторного использования

void pad_reset ()

Pad_swipe
Отказаться от tmp в текущем пэде по смещению po и заменить его новым.

void pad_swipe (PADOFFSET po, bool refadjust)

GV функции


gv_try_downgrade
ПРИМЕЧАНИЕ: эта функция является экспериментальной и может быть изменена или удалена без предварительного уведомления.

Если typeglob "gv" можно выразить более кратко, используя что-то другое
чем реальный GV на своем месте в тайнике, замените его оптимизированной формой.
Основные требования для этого заключаются в том, что "gv" является реальным typeglob, достаточно
обычный, и ссылка на него содержится только в его упаковке. Эта функция предназначена для
используется, когда GV частично просматривается, чтобы увидеть, что там было, вызывая
модернизации, но на основании того, что было обнаружено, оказывается, что настоящая GV не
требуется в конце концов.

Если «gv» является полностью пустым глобальным типом, он удаляется из тайника.

Если "gv" - это тип-глоб, содержащий только достаточно обычную константную подпрограмму, то
typeglob заменяется заполнителем скалярной ссылки, который более компактно
представляет то же самое.

void gv_try_downgrade (GV * gv)

Hash Манипуляция функции


hv_ename_add
Добавляет имя во внутренний список эффективных имен тайника. См. «Hv_ename_delete».

Это вызывается, когда тайник назначается новому месту в таблице символов.

void hv_ename_add (HV * hv, const char * name, U32 len,
Флаги U32)

hv_ename_delete
Удаляет имя из внутреннего списка действующих имен тайника. Если это
имя, возвращаемое "HvENAME", тогда другое имя в списке займет его место
("HvENAME" будет использовать это).

Это вызывается, когда тайник удаляется из таблицы символов.

void hv_ename_delete (HV * hv, const char * name,
U32 len, U32 флаги)

refcounted_he_chain_2hv
Создает и возвращает «HV *», представляющее содержимое «refcounted_he»
цепь. Флаги в настоящее время не используется и должен быть равен нулю.

HV * refcounted_he_chain_2hv (
const struct refcounted_he * c, флаги U32
)

refcounted_he_fetch_pv
Как "refcounted_he_fetch_pvn", но принимает строку с завершающим нулем вместо строки
пара строка / длина.

SV * refcounted_he_fetch_pv (
const struct refcounted_he * цепочка,
ключ const char *, хэш U32, флаги U32
)

refcounted_he_fetch_pvn
Найдите в цепочке refcounted_he запись с ключом, указанным в ключевое слово
и Keylen. Если Флаги имеет установленный бит "REFCOUNTED_HE_KEY_UTF8", октеты ключа
интерпретируются как UTF-8, в противном случае они интерпретируются как Latin-1. хэш - это
предварительно вычисленный хэш ключевой строки или ноль, если он не был предварительно вычислен.
Возвращает смертный скаляр, представляющий значение, связанное с ключом, или
& PL_sv_placeholder, если с ключом не связано никакого значения.

SV * refcounted_he_fetch_pvn (
const struct refcounted_he * цепочка,
const char * keypv, STRLEN keylen, хеш U32,
Флаги U32
)

refcounted_he_fetch_pvs
Как "refcounted_he_fetch_pvn", но принимает буквальную строку вместо
пара строка / длина и без предварительно вычисленного хеша.

SV * refcounted_he_fetch_pvs (
const struct refcounted_he * цепочка,
ключ const char *, флаги U32
)

refcounted_he_fetch_sv
Как "refcounted_he_fetch_pvn", но принимает скаляр Perl вместо строки / длины
пара.

SV * refcounted_he_fetch_sv (
const struct refcounted_he * цепочка, SV * ключ,
U32 хеш, U32 флаги
)

refcounted_he_free
Уменьшает счетчик ссылок в refcounted_he на единицу. Если ссылка
счетчик достигает нуля, память структуры освобождается, что (рекурсивно) вызывает
уменьшение счетчика ссылок его родительского "refcounted_he". Безопасно пройти
нулевой указатель на эту функцию: в этом случае никаких действий не происходит.

void refcounted_he_free (struct refcounted_he * он)

refcounted_he_inc
Увеличьте счетчик ссылок «refcounted_he». Указатель на
Также возвращается "refcounted_he". На это безопасно передавать нулевой указатель.
функция: никаких действий не происходит, возвращается нулевой указатель.

struct refcounted_he * refcounted_he_inc (
struct refcounted_he * он
)

refcounted_he_new_pv
Как "refcounted_he_new_pvn", но принимает строку с завершающим нулем вместо строки
пара строка / длина.

struct refcounted_he * refcounted_he_new_pv (
struct refcounted_he * parent,
const char * key, хеш U32,
SV * значение, флаги U32
)

refcounted_he_new_pvn
Создает новый refcounted_he. Он состоит из одной пары ключ / значение и
ссылка на существующую цепочку refcounted_he (которая может быть пустой) и, следовательно,
образует более длинную цепочку. При использовании более длинной цепочки новая пара ключ / значение принимает
приоритет над любой записью для того же ключа дальше по цепочке.

Новый ключ указан ключевое слово и Keylen. Если Флаги имеет
Установлен бит "REFCOUNTED_HE_KEY_UTF8", октеты ключа интерпретируются как UTF-8,
в противном случае они интерпретируются как Latin-1. хэш предварительно вычисленный хеш ключа
строка или ноль, если он не был предварительно вычислен.

ценностное - скалярное значение, сохраняемое для этого ключа. ценностное копируется этим
функция, которая, таким образом, не получает права собственности на какие-либо ссылки на нее, а позже
изменения в скаляре не будут отражены в значении, видимом в
"refcounted_he". Сложные типы скаляров не будут храниться со ссылочными
целостность, но будет принуждена к струнам. ценностное может быть либо нулевым, либо
& PL_sv_placeholder, чтобы указать, что с ключом не должно быть связано никакого значения;
это, как и любое ненулевое значение, имеет приоритет над существованием значения
для ключа дальше по цепочке.

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

struct refcounted_he * refcounted_he_new_pvn (
struct refcounted_he * parent,
const char * keypv,
STRLEN keylen, хеш U32,
SV * значение, флаги U32
)

refcounted_he_new_pvs
Как "refcounted_he_new_pvn", но принимает буквальную строку вместо
пара строка / длина и без предварительно вычисленного хеша.

struct refcounted_he * refcounted_he_new_pvs (
struct refcounted_he * parent,
const char * ключ, SV * значение,
Флаги U32
)

refcounted_he_new_sv
Как "refcounted_he_new_pvn", но принимает скаляр Perl вместо строки / длины
пара.

struct refcounted_he * refcounted_he_new_sv (
struct refcounted_he * parent,
SV * ключ, U32 хэш, SV * значение,
Флаги U32
)

IO функции


start_glob
ПРИМЕЧАНИЕ: эта функция является экспериментальной и может быть изменена или удалена без предварительного уведомления.

Функция, вызываемая "do_readline" для создания глобуса (или создания глобуса внутри perl на
VMS). Раньше этот код был встроенным, но теперь perl использует этот глобус "File :: Glob".
starter используется miniperl только в процессе сборки. При удалении сжимается
pp_hot.c; сжатие pp_hot.c помогает ускорить работу Perl.

PerlIO * start_glob (SV * tmpglob, IO * io)

лексер интерфейс


validate_proto
ПРИМЕЧАНИЕ: эта функция является экспериментальной и может быть изменена или удалена без предварительного уведомления.

Эта функция выполняет проверку синтаксиса прототипа "proto". Если "предупреждать"
правда, любые недопустимые символы или несоответствующие скобки вызовут незаконный прото
предупреждения, заявляющие, что они были обнаружены в прототипе по «имени».

Возвращаемое значение - «истина», если это действительный прототип, и «ложь», если это не так,
независимо от того, было ли "предупреждать" "истинным" или "ложным".

Обратите внимание, что «NULL» является допустимым «proto» и всегда будет возвращать «true».

ПРИМЕЧАНИЕ: форма perl_ этой функции устарела.

bool validate_proto (SV * имя, SV * proto, bool warn)

Магический функции


Magic_clearhint
Вызывается удалением из% ^ H, записывает ключ в "PL_compiling.cop_hints_hash".

int magic_clearhint (SV * sv, МАГИЯ * мг)

Magic_clearhints
Вызывается очисткой% ^ H, сбрасывает "PL_compiling.cop_hints_hash".

int magic_clearhints (SV * sv, MAGIC * мг)

Magic_methcall
Вызов магического метода (например, FETCH).

«sv» и «mg» - это связанная штука и магия галстука.

«мет» - это имя вызываемого метода.

«argc» - это количество аргументов (помимо $ self), передаваемых методу.

«Флаги» могут быть:

G_DISCARD вызывает метод с флагом G_DISCARD и не
вернуть значение
G_UNDEF_FILL заполняет стек указателями argc на
PL_sv_undef

Сами аргументы - это любые значения, следующие за аргументом «flags».

Возвращает SV (если есть), возвращенный методом, или NULL в случае ошибки.

SV * magic_methcall (SV * sv, const MAGIC * mg,
SV * meth, флаги U32, U32 argc,
...)

magic_setint
Запускается хранилищем в% ^ H, записывает пару ключ / значение в
"PL_compiling.cop_hints_hash". Предполагается, что подсказки ничего не хранят
для этого потребуется глубокая копия. Может стоит предупредить, если найдем ссылку.

int magic_sethint (SV * sv, МАГИЯ * мг)

mg_localize
Скопируйте часть волшебства из существующего SV в новую локализованную версию этого SV.
Магия контейнера (например,% ENV, $ 1, галстук) копируется, магия значения - нет (например, taint,
поз).

Если setmagic ложно, тогда никакая set magic не будет вызываться на новом (пустом) SV. Этот
обычно означает, что вскоре последует присвоение (например, 'local $ x = $ y'), и что
справится с магией.

void mg_localize (SV * sv, SV * nsv, bool setmagic)

Прочее функции


free_c_backtrace
Освобождает трассировку, полученную от get_c_bracktrace.

void free_c_backtrace (Perl_c_backtrace * bt)

get_c_backtrace
Собирает обратную трассировку (также известную как «stacktrace») в один линейный маллокированный буфер,
который звонящий должен Perl_free_c_backtrace ().

Сканирует кадры назад по глубине + пропуск, затем отбрасывает самый внутренний пропуск, возвращаясь на
самая глубина кадров.

Perl_c_backtrace * get_c_backtrace (int max_depth,
int пропустить)

MRO функции


mro_get_linear_isa_dfs
Возвращает линеаризацию поиска в глубину @ISA для данного тайника. Возврат
value - это AV-файл, доступный только для чтения *. "level" должен быть 0 (он используется для внутренних целей в этом
рекурсия функции).

Вы несете ответственность за "SvREFCNT_inc ()" в возвращаемом значении, если планируете хранить
это где-нибудь полупостоянно (в противном случае он может быть удален из-под вас
в следующий раз, когда кеш станет недействительным).

AV * mro_get_linear_isa_dfs (HV * stash, уровень U32)

mro_isa_changed_in
Предпринимает необходимые шаги (в основном, аннулирование кеша), когда @ISA данного
пакет изменился. Вызывается магией "сетиса", не нужно вызывать
непосредственно.

void mro_isa_changed_in (HV * тайник)

mro_package_moved
Вызовите эту функцию, чтобы сообщить тайнику, что он был назначен на другое место.
в иерархии тайников. "тайник" - это назначенный тайник. "oldstash"
это тайник, который он заменяет, если таковой имеется. "gv" - это глобус, который на самом деле
назначен.

Это также можно вызвать с нулевым первым аргументом, чтобы указать, что "oldstash" имеет
был удален.

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

Он также устанавливает соответствующие имена («HvENAME») для всех тайников.

Если "gv" присутствует и отсутствует в таблице символов, то эта функция просто
возвращается. Этот флажок будет пропущен, если "flags & 1".

void mro_package_moved (HV * const stash,
HV * const oldstash,
константа GV * константа gv,
Флаги U32)

Оптри Манипуляция функции


Finalize_optree
Эта функция завершает работу с optree. Вызывается сразу после завершения
optree построен. Выполняется дополнительная проверка, которую нельзя выполнить в
обычные функции ck_xxx и делают дерево потокобезопасным.

недействительным finalize_optree (OP * o)

Аттенюатор Данные Структуры


CX_CURPAD_SAVE
Сохраните текущую площадку в данной структуре контекстного блока.

void CX_CURPAD_SAVE (контекст структуры)

CX_CURPAD_SV
Доступ к SV со смещением po в сохраненной текущей контактной площадке в данном блоке контекста
структура (может использоваться как lvalue).

SV * CX_CURPAD_SV (контекст структуры, PADOFFSET po)

PadnameIsOUR
Является ли это «нашей» переменной.

bool PadnameIsOUR (PADNAME pn)

PadnameIsSTATE
Является ли это переменной "состояния".

bool PadnameIsSTATE (PADNAME pn)

Имя:OURSTASH
Тайник, в котором была объявлена ​​эта «наша» переменная.

HV * PadnameOURSTASH ()

PadnameOUTER
Принадлежит ли эта запись внешней панели. Записи, для которых это верно,
часто называют «подделкой».

bool PadnameOUTER (PADNAME pn)

PadnameTYPE
Тайник, связанный с типизированной лексикой. Это возвращает% Foo :: hash для "my
Foo $ bar ".

HV * PadnameTYPE (PADNAME pn)

PAD_BASE_SV
Получить значение из слота «po» в основной (DEPTH = 1) панели padlist.

SV * PAD_BASE_SV (список папок PADLIST, PADOFFSET po)

PAD_CLONE_VARS
Клонируйте переменные состояния, связанные с запуском и компилированием пэдов.

void PAD_CLONE_VARS (PerlInterpreter * proto_perl,
CLONE_PARAMS * параметр)

PAD_COMPNAME_FLAGS
Вернуть флаги для текущего имени компилируемого пэда по смещению "po". Предполагает
допустимая запись в слоте.

U32 PAD_COMPNAME_FLAGS (PADOFFSET po)

PAD_COMPNAME_GEN
Номер поколения имени по смещению "po" в текущей компилируемой панели.
(lvalue). Обратите внимание, что "SvUVX" взломан для этой цели.

STRLEN PAD_COMPNAME_GEN (PADOFFSET po)

PAD_COMPNAME_GEN_set
Устанавливает номер поколения имени со смещением "po" в текущей линг-панели.
(lvalue) на "gen". Обратите внимание, что для этой цели используется "SvUV_set".

STRLEN PAD_COMPNAME_GEN_set (PADOFFSET po, int gen)

PAD_COMPNAME_OURSTASH
Вернуть тайник, связанный с «нашей» переменной. Предполагается, что запись в слоте
действительное «наше» лексическое.

HV * PAD_COMPNAME_OURSTASH (PADOFFSET po)

PAD_COMPNAME_PV
Возвращает имя текущего компилируемого пэда со смещением «po». Предполагает действительный
вход в слот.

символ * PAD_COMPNAME_PV (PADOFFSET po)

PAD_COMPNAME_TYPE
Возвращает тип (тайник) текущего имени компилируемого пэда по смещению "po". Должно быть
допустимое имя. Возвращает null, если не введено.

HV * PAD_COMPNAME_TYPE (PADOFFSET po)

PAD_RESTORE_LOCAL
Восстановите старую площадку, сохраненную в локальной переменной opad с помощью PAD_SAVE_LOCAL ()

void PAD_RESTORE_LOCAL (PAD * opad)

PAD_SAVE_LOCAL
Сохраните текущую площадку в локальной переменной opad, затем сделайте текущую площадку равной
на npad

void PAD_SAVE_LOCAL (PAD * opad, PAD * npad)

PAD_SAVE_SETNULLPAD
Сохраните текущую площадку и установите для нее значение null.

void PAD_SAVE_SETNULLPAD ()

PAD_SETSV
Установите слот со смещением «po» в текущем пэде на «sv»

SV * PAD_SETSV (PADOFFSET po, SV * sv)

PAD_SET_CUR
Установите текущий пэд как пэд «n» в списке пэдов, сохраняя предыдущий текущий пэд.
NB в настоящее время этот макрос расширяется до строки, слишком длинной для некоторых компиляторов, поэтому он
лучше заменить его

SAVECOMPPAD ();
PAD_SET_CUR_NOSAVE (список контактов, число);

void PAD_SET_CUR (список контактов PADLIST, I32 n)

PAD_SET_CUR_NOSAVE
как PAD_SET_CUR, но без сохранения

void PAD_SET_CUR_NOSAVE (список контактов 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)

СОХРАНИТЬОЧИСТИТЬV
Очистите указанное значение контактной площадки при выходе из области видимости. (т. е. действие во время выполнения "мой")

void SAVECLEARSV (SV ** svp)

СОХРАНИТЬCOMPPAD
сохраните PL_comppad и PL_curpad

void SAVECOMPPAD ()

СОХРАНИТЬПАДСВ
Сохраните слот контактной площадки (используется для восстановления после итерации)

XXX DAPM было бы разумнее сделать аргумент PADOFFSET
void SAVEPADSV (PADOFFSET po)

Устный переводчик Переменные


PL_DBsingle
Когда Perl запущен в режиме отладки, с -d switch, этот SV является логическим, который
указывает, являются ли сабвуферы одношаговыми. Пошаговое выполнение автоматически
включается после каждого шага. Это переменная C, которая соответствует Perl
$ DB :: одиночная переменная. См. «PL_DBsub».

SV * PL_DBодиночный

PL_DBsub
Когда Perl запущен в режиме отладки, с -d переключатель, этот GV содержит SV
который содержит имя отлаживаемой подпрограммы. Это переменная C, которая
соответствует переменной Perl $ DB :: sub. См. «PL_DBsingle».

ГВ * PL_DBsub

PL_DBtrace
Переменная трассировки, используемая при запуске Perl в режиме отладки, с -d выключатель. Этот
- это переменная C, соответствующая переменной Perl $ DB :: trace. Видеть
«PL_DBsingle».

СВ*PL_DBtrace

PL_dowarn
Переменная C, которая соответствует переменной предупреждения Perl $ ^ W.

bool PL_dowarn

PL_last_in_gv
GV, который последний раз использовался для операции ввода дескриптора файла. (" ")

GV * PL_last_in_gv

PL_ofsgv
Глобус, содержащий разделитель выходного поля - «*» в пространстве Perl.

GV * PL_ofsgv

PL_rs Разделитель входной записи - $ / в пространстве Perl.

SV * PL_rs

Стек Манипуляция Макрос


djSP Объявить просто "SP". Это фактически идентично "dSP" и объявляет локальную копию
указателя стека perl, доступного через макрос "SP". См. «СП». (Доступны для
обратная совместимость исходного кода со старой (Perl 5.005) потоковой моделью.)

джсп;

LVRET Истина, если эта операция будет возвращаемым значением подпрограммы lvalue

SV Манипуляция функции


SV (или AV, HV и т. Д.) Выделяется в двух частях: голова (struct sv, av, hv ...)
содержит информацию о типе и количестве ссылок, а для многих типов указатель на тело
(struct xrv, xpv, xpviv ...), который содержит поля, специфичные для каждого типа. Некоторые типы
храните все, что им нужно, в голове, чтобы не иметь тела.

Во всех конфигурациях, кроме наиболее параноидальных к памяти (например, PURIFY), головы и тела
выделено вне арен, которые по умолчанию представляют собой разбитые блоки памяти размером около 4 КБ.
до N голов или тел. Св-тела выделяются по их св-типу, гарантируя размер.
согласованность, необходимая для безопасного выделения из массивов.

Для SV-голов первый слот на каждой арене зарезервирован и содержит ссылку на следующий
арена, несколько флагов и примечание о количестве слотов. Через каждую цепочку арен пролегает
связанный список бесплатных товаров; когда он становится пустым, выделяется дополнительная арена и
разделен на N элементов, которые включены в свободный список.

SV-тела похожи, но по умолчанию они используют наборы арен, которые разделяют ссылку и
информацию с самой арены и освободите 1-й слот на арене. SV-кузова далее
описано позже.

С аренами связаны следующие глобальные переменные:

PL_sv_arenaroot указатель на список арен SV
PL_sv_root указатель на список свободных структур SV

PL_body_arenas глава связанного списка арен тела
PL_body_roots [] массив указателей на список свободных тел svtype
массивы индексируются по необходимому svtype

Несколько специальных голов SV не выделяются на арене, а вместо этого создаются напрямую.
в структуре интерпретатора, например PL_sv_undef. Размер арен можно изменить с
по умолчанию, установив PERL_ARENA_SIZE соответствующим образом во время компиляции.

Арена SV служит второстепенной цели, позволяя находить все еще живые космические аппараты и
уничтожен во время окончательной уборки.

На самом низком уровне макросы new_SV () и del_SV () схватить и освободить голову СВ. (Если
отладка с -DD, del_SV () вызывает функцию S_del_sv () вернуть СВ в бесплатную
список с проверкой ошибок.) new_SV () призывы more_sv () / sv_add_arena () добавить дополнительную арену
если свободный список пуст. Для SV в свободном списке в поле SvTYPE установлено все.

Во время последней очистки sv_free_arenas () вызывается из perl_destruct () в
физически освободить все арены, выделенные с момента запуска интерпретатора.

Функция визит() просматривает список арен SV и вызывает указанную функцию для каждого SV
он находит, что все еще живое, то есть имеющее SvTYPE, отличное от всех единиц, и ненулевое значение
SvREFCNT. визит() используется следующими функциями (указанными как [функция, вызывающая
визит()] / [функция, вызываемая визит() для каждого SV]):

sv_report_used () / do_report_used ()
дамп всех оставшихся КА (помощь при отладке)

sv_clean_objs () / do_clean_objs (), do_clean_ named_objs (),
do_clean_ named_io_objs (), do_curse ()
Попытка освободить все объекты, на которые указывает RV,
постарайтесь сделать то же самое для всех объектов без
на него также ссылаются typeglobs, и
затем сделайте последнюю зачистку, проклиная любого
объекты, которые остались. Вызывается один раз из
perl_destruct () перед вызовом sv_clean_all ()
внизу.

sv_clean_all () / do_clean_all ()
SvREFCNT_dec (sv) каждый оставшийся SV, возможно
запускает sv_free (). Он также устанавливает
Флаг SVf_BREAK на SV, чтобы указать, что
refcnt был искусственно занижен, и поэтому
остановка sv_free () от выдачи ложных предупреждений
о SV, которые неожиданно имеют реф.
нуля. вызывается повторно из perl_destruct ()
пока не останется SV.

СвTHINKFIRST
Быстрая проверка флага, чтобы увидеть, следует ли передавать sv в sv_force_normal, чтобы
"понижен" до того, как SvIVX или SvPVX можно будет изменить напрямую.

Например, если ваш скаляр является ссылкой и вы хотите изменить слот SvIVX,
вы не можете просто выполнить SvROK_off, так как это приведет к утечке референта.

Это используется внутри различных функций изменения sv, таких как sv_setsv,
sv_setiv и sv_pvn_force.

Один случай, когда это не обрабатывается, - это gv без установленного SvFAKE. После

если (SvTHINKFIRST (gv)) sv_force_normal (gv);

это все равно будет gv.

SvTHINKFIRST иногда дает ложные срабатывания. В таких случаях sv_force_normal
ничего не делает.

U32 SvTHINKFIRST (SV * sv)

sv_add_arena
Получив кусок памяти, свяжите его с заголовком списка арен и разделите его.
в список бесплатных SV.

void sv_add_arena (char * const ptr, const U32 size,
const флаги U32)

sv_clean_all
Уменьшите refcnt каждого оставшегося SV, возможно, запустив очистку. Этот
функцию, возможно, придется вызывать несколько раз, чтобы освободить SV, которые находятся в сложном
самореференциальные иерархии.

I32 sv_clean_all ()

sv_clean_objs
Попытка уничтожить все еще не освобожденные объекты.

void sv_clean_objs ()

sv_free_arenas
Освободите память, используемую всеми аренами. Обратите внимание, что все отдельные головки SV
и тела на аренах, должно быть, уже были освобождены.

недействительна sv_free_arenas ()

SV-тело распределение


sv_2num ПРИМЕЧАНИЕ: эта функция является экспериментальной и может быть изменена или удалена без предварительного уведомления.

Верните SV с числовым значением исходного SV, выполнив все необходимые действия.
преобразование ссылки или перегрузки. Ожидается, что вызывающий обработал get-
магия уже.

SV * sv_2num (SV * const sv)

sv_copypv
Копирует строковое представление исходного SV в целевой SV.
Автоматически выполняет любые необходимые mg_get и приведение числовых значений в
струны. Гарантированно сохраняет флаг UTF8 даже от перегруженных объектов. Похожий
по своей природе для sv_2pv [_flags], но работает непосредственно с SV, а не только с
нить. В основном использует sv_2pv_flags для выполнения своей работы, кроме тех случаев, когда это приведет к потере
UTF-8'ность клипа.

void sv_copypv (SV * const dsv, SV * const ssv)

sv_ref Возвращает SV, описывающий, на что переданный SV является ссылкой.

SV * sv_ref (SV * dst, const SV * const sv,
const целое об)

Unicode Поддержка


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,
логическое соответствие, const char ** desc_p)

report_uninit
Вывести соответствующее предупреждение «Использование неинициализированной переменной».

void report_uninit (const SV * uninit_sv)

Недокументированный Функции


Следующие функции в настоящее время недокументированы. Если вы воспользуетесь одним из них, вы можете пожелать
рассмотреть возможность создания и подачи документации по нему.

PerlIO_restore_errno
PerlIO_save_errno
Slab_Alloc
Slab_Free
Slab_to_ro
Slab_to_rw
_add_range_to_invlist
_core_swash_init
_get_encoding
_get_swash_invlist
_invlist_array_init
_invlist_contains_cp
_invlist_contents
_invlist_dump
_invlist_intersection
_invlist_intersection_maybe_complement_2nd
_invlist_invert
_invlist_len
_invlist_populate_swatch
_invlist_search
_invlist_subtract
_invlist_union
_invlist_union_maybe_complement_2nd
_load_PL_utf8_foldclosures
_new_invlist
_setup_canned_invlist
_swash_inversion_hash
_swash_to_invlist
_to_fold_latin1
_to_upper_title_latin1
_warn_problematic_locale
aassign_common_vars
add_cp_to_invlist
alloc_maybe_populate_EXACT
распределить
amagic_is_enabled
подать заявление
av_extend_guts
av_reify
связывание_матч
boot_core_PerlIO
boot_core_UNIVERSAL
boot_core_mro
сможет сделать
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_join
ck_length
ck_lfun
ck_listiob
ck_match
ck_метод
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
ближайший_полицейский
Compute_EXACTish
coresub_op
create_eval_scope
croak_no_mem
croak_popstack
current_re_engine
custom_op_get_field
cv_ckproto_len_flags
cv_clone_into
cv_const_sv_or_av
cv_undef_flags
cvgv_from_hek
cvgv_set
cvstash_set
deb_stack_all
deflem_target
delete_eval_scope
die_unwind
do_aexec
do_aexec5
do_eof
do_exec
do_exec3
do_execfree
do_ipcctl
do_ipcget
do_msgrcv
do_msgsnd
do_ncmp
do_open6
do_open_raw
do_print
do_readline
do_seek
do_semop
do_shmio
do_sysseek
скажи
do_trans
do_vecget
do_vecset
do_vop
дофайл
drand48_init_r
drand48_r
dump_all_perl
dump_packsubs_perl
dump_sub_perl
dump_sv_child
emulate_cop_io
Feature_is_enabled
find_lexical_cv
find_runcv_where
find_rundefsv2
find_script
free_tied_hv_pool
get_and_check_backslash_N_name
get_db_sub
get_debug_opts
get_hash_seed
get_invlist_iter_addr
get_invlist_offset_addr
get_invlist_previous_index_addr
get_no_modify
get_opargs
get_re_arg
getenv_len
grok_atoUV
grok_bslash_x
gv_fetchmeth_internal
gv_override
gv_setref
gv_stashpvn_internal
gv_stashsvpvn_cached
hfree_next_entry
hv_backreferences_p
hv_kill_backrefs
hv_placeholder_p
hv_undef_flags
init_argv_symbols
init_constants
init_dbargs
init_debugger
инвертировать
invlist_array
invlist_clone
invlist_highest
invlist_is_iteration
invlist_iterfinish
invlist_iterinit
invlist_max
invlist_previous_index
invlist_set_len
invlist_set_previous_index
invlist_trim
io_close
is_utf8_common
isinfnansv
возможно
ключевое слово
ключевое слово_plugin_standard
список
локализуются
Magic_clear_all_env
Magic_cleararylen_p
Magic_clearenv
Magic_clearisa
Magic_clearpack
Magic_clearsig
Magic_copycallchecker
Magic_existspack
Magic_freearylen_p
Magic_freeovrld
Magic_get
Magic_getarylen
Magic_getdebugvar
Magic_getdefelem
Magic_getnkeys
Magic_getpack
Magic_getpos
Magic_getsig
Magic_getsubstr
Magic_gettaint
Magic_getuvar
Magic_getvec
Magic_killbackrefs
Magic_nextpack
Magic_regdata_cnt
Magic_regdatum_get
Magic_regdatum_set
Magic_scalarpack
Magic_set
Magic_set_all_env
Magic_setarylen
Magic_setcollxfrm
Magic_setdbline
Magic_setdebugvar
Magic_setdefelem
Magic_setenv
Magic_setisa
Magic_setlvref
Magic_setmglob
Magic_setnkeys
Magic_setpack
Magic_setpos
Magic_setregexp
Magic_setsig
Magic_setsubstr
Magic_settaint
Magic_setutf8
Magic_setuvar
Magic_setvec
Magic_sizepack
Magic_wipepack
malloc_good_size
malloced_size
mem_collxfrm
mg_find_mglob
mode_from_discipline
more_body
mro_meta_dup
mro_meta_init
multideref_stringify
мои_аттры
my_clearenv
my_lstat_flags
my_stat_flags
my_unexec
новоеATTRSUB_x
новыйГП
новыйMETHOP_internal
новыйSTUB
новое
новыйXS_deffile
новыйXS_len_flags
новое_предупреждение_битовое поле
следующийargv
noperl_die
ой AV
упсHV
op_clear
op_integerize
op_lvalue_flags
op_refcnt_dec
op_refcnt_inc
op_relocate_sv
op_std_init
op_unscope
opmethod_stash
opslab_force_free
opslab_free
opslab_free_nopad
пакет
версия_пакета
Pad_add_weakref
Padlist_store
Padname_free
Padnamelist_free
parse_subsignature
parse_unicode_opts
parser_free
parser_free_nexttoke_ops
path_is_searchable
писк
время выполнения
populate_isa
ptr_hash
ошибка
re_op_compile
reg_ named_buff
reg_ named_buff_iter
reg_numbered_buff_fetch
reg_numbered_buff_length
reg_numbered_buff_store
reg_qr_package
reg_skipcomment
reg_temp_copy
регулярно
regpposixcc
регпроп
report_evil_fh
report_redefine_cv
report_wrongway_fh
отпишись
rsignal_restore
rsignal_save
rxres_save
тот же_дирент
save_aliased_sv
save_strlen
пила
скаляр
скалярная дыра
set_caret_X
set_padlist
must_warn_nl
сигхандлер
softref2xv
ssc_add_range
ssc_clear_locale
ssc_cp_and
ssc_intersection
ssc_union
sub_crush_глубина
sv_add_backref
sv_buf_to_ro
sv_del_backref
sv_free2
sv_kill_backrefs
sv_len_utf8_nomg
sv_magicext_mglob
sv_mortalcopy_flags
sv_only_taint_gmagic
sv_or_pv_pos_u2b
sv_resetpvn
sv_setek
sv_setsv_cow
sv_unglob
связанный_метод
tmps_grow_p
Translation_substr_offsets
try_amagic_bin
try_amagic_un
unshare_hek
использовать
VarName
vivify_defelem
vivify_ref
ожидание4pid
was_lvalue_sub
смотреть
win32_croak_not_implemented
write_to_stderr
xs_boot_epilog
xs_рукопожатие
йеррор
yyerror_pv
yyerror_pvn
юлекс
yyparse
юнлекс

АВТОРЫ


Система автодокументации была первоначально добавлена ​​в ядро ​​Perl Бенджамином Стулем.
Документация принадлежит тем, кто был достаточно любезен, чтобы задокументировать свои функции.

Используйте perlintern онлайн с помощью сервисов onworks.net


Бесплатные серверы и рабочие станции

Скачать приложения для Windows и Linux

  • 1
    Осу!
    Осу!
    Осу! это простая ритм-игра с колодцем
    продуманная кривая обучения для игроков
    всех уровней мастерства. Один из великих
    аспекты Осу! в том, что это
    сообщество-доктор...
    Скачать Осу!
  • 2
    LIBPNG: справочная библиотека PNG
    LIBPNG: справочная библиотека PNG
    Справочная библиотека для поддержки
    Формат Portable Network Graphics (PNG).
    Аудитория: Разработчики. Программирование
    Язык: C. Это приложение, которое
    также может ...
    Скачать LIBPNG: справочная библиотека PNG
  • 3
    Металлоискатель на базе RP2040
    Металлоискатель на базе RP2040
    На основе платы Raspberry Pi Pico это
    металлоискатель включен в импульсный
    категория индукционных металлоискателей, с
    хорошо известные преимущества и недостатки.
    RP ...
    Скачать Металлоискатель на базе RP2040
  • 4
    PAC-менеджер
    PAC-менеджер
    PAC является заменой Perl/GTK для
    SecureCRT/Putty/и т. д. (linux
    ssh/telnet/... gui)... Предоставляет графический интерфейс
    настроить соединения: пользователи,
    пароли, ОЖИДАЕМЫЕ правила...
    Скачать PAC-менеджер
  • 5
    GeoServer
    GeoServer
    GeoServer — это программное обеспечение с открытым исходным кодом.
    сервер, написанный на Java, который позволяет пользователям
    для совместного использования и редактирования геопространственных данных.
    Разработанный для взаимодействия, он
    издает да ...
    Скачать Геосервер
  • 6
    Светлячок III
    Светлячок III
    Бесплатные личные финансы с открытым исходным кодом
    управляющий делами. Светлячок III имеет
    система двойной записи. Вы можете
    быстро ввести и организовать свой
    транзакции я ...
    Скачать Светлячок III
  • Больше »

Команды Linux

Ad