我的本地分布如下:
.
├── META6.json
└── lib
└── Foo.pm6
perl6 -I. -e 'use Foo;'
和perl6 -Ilib -e 'use Foo;'
都可以编译并运行,所以我应该使用哪一个?为什么? 最佳答案
提出此问题的另一种方式是“-I $ dir-with-meta6-file和-I $ dir-without-meta6-file有什么区别?”。在这个答案中,-I.
将在技术上指的是-I $dir-with-meta6-file
,而-Ilib
将指的是-I $dir-without-meta6-file
。另请注意,这涵盖了use lib '.'
和use lib 'lib'
-I.
和-Ilib
之间的区别可以简要总结如下:
-I.
将在META6.json
上查找提供的文件/ namespace 及其版本/api/auth -Ilib
提供所有现有文件并将它们映射到可预测的 namespace (Foo/Bar.pm6
-> Foo::Bar
),并将匹配任何版本/api/auth 通常,在开发过程中(尤其是在启动时)会使用
-Ilib
,因为它比手动在META6.json
文件中添加/删除条目更容易。如果您正在编写本地应用程序或不打算安装的内容,则通常可以。然而!一旦为分发创建了
-I.
文件,就应该首选META6.json
。手动维护可能需要更多的工作,但是它具有一些优点:META6.json
文件中列出的文件。 .pm
文件旁边的Perl .pm6
文件作为一种双语言分布,因为您可以明确告诉Perl6要使用哪些文件。 -Ilib
必须将所有.pm
和.pm6
文件都视为Perl6,这与该想法不兼容。