有沒有人知道在源代碼和編譯階段use
中的確切位置?我沒有看到它尋找CORE::GLOBAL::use
,我不確定如何潛水尋找它。這是一個非常模糊的術語。perl源代碼中定義了`use`的用途?
3
A
回答
7
的use
語法在解析器(perly.y
)所定義。摘錄:
| USE startsub
{ CvSPECIAL_on(PL_compcv); /* It's a BEGIN {} */ }
BAREWORD BAREWORD optlistexpr ';'
{
SvREFCNT_inc_simple_void(PL_compcv);
utilize($1, $2, $4, $5, $6);
parser->parsed_sub = 1;
$$ = NULL;
}
不知道yacc的,我不知道那是什麼做的。
utilize()
功能是Perl_utilize()
從op.c
。此代碼創建一個包含require
的BEGIN塊。的veop
和imop
變量可以容納操作碼,用於檢查版本或進口所需的元素:
/* Fake up the BEGIN {}, which does its thing immediately. */
newATTRSUB(floor,
newSVOP(OP_CONST, 0, newSVpvs_share("BEGIN")),
NULL,
NULL,
op_append_elem(OP_LINESEQ,
op_append_elem(OP_LINESEQ,
newSTATEOP(0, NULL, newUNOP(OP_REQUIRE, 0, idop)),
newSTATEOP(0, NULL, veop)),
newSTATEOP(0, NULL, imop)));
鏈接到在Github上鏡v5.26.0源:
-1
它在CORE
。
perl -w -E 'CORE::use Data::Dumper; print Dumper("a")'
相關問題
- 1. 'jshint globalstrict:true`'use strict'的用途
- 2. 在源代碼文件中定義emacs的perl縮進?
- 3. Perl代碼,定義參數
- 4. PHP:類中定義的'use'
- 5. java源代碼到html,包含從用途到定義的鏈接
- 6. WPF中XmlDataProvider的自定義源代碼
- 7. 檢查源代碼中是否定義了python類
- 8. 在Numpy源代碼中定義了哪些常量?
- 9. 在android源代碼中定義了以下函數在哪裏?
- 10. 內核源代碼 - 在哪個文件中定義了brk()
- 11. 「找不到標籤」,儘管在Java源代碼中定義了
- 12. 瞭解一段Perl代碼
- 13. 如何在base.gwt.xml中定義源代碼?
- 14. jQuery源代碼中「self.each(callback,array)」的用途是什麼?
- 15. Silverlight SDK源代碼中此方法的用途是什麼?
- 16. 什麼是「1」在Perl源代碼中?
- 17. Perl特定代碼
- 18. 定義源碼
- 19. 此代碼中類變量的用途
- 20. 方法瞭解現有的Perl代碼?
- 21. 瞭解Application.routes.draw源代碼
- 22. 瞭解jQuery源代碼
- 23. 瞭解jquery源代碼 - jquery.fn.init
- 24. CKEDITOR的源代碼模式加擾自定義模板代碼
- 25. 無法使用ResourceDictionary中定義的資源在代碼
- 26. 在connect.js源代碼中定義的應用程序在哪裏?
- 27. Android - 中途停止代碼?
- 28. 如何使用存儲在數據庫中的定義來定義源代碼?
- 29. 自定義規則檢查源代碼
- 30. 如何在此Perl代碼中轉義?
'use'不是具有任何運行效果的函數/運算符。相反,它是一個隱含的BEGIN塊,它執行'require',並可能執行導入或版本檢查。所以它可能被「定義」得非常接近解析代碼。 – amon
如果你仍然在尋求卸載東西,我認爲你需要考慮需求。你有沒有在p5p郵件列表中詢問你的要求? – simbabque