8

私はbase.pmPerlディストリビューションのソースを見ていますが、それを「非実用的な」モジュールと区別するものがわかりません。が「プラグマ」である場合、モジュールはどこにあるuse baseのかとは根本的に異なりますか?use FooFoo

4

2 に答える 2

7

プラグマの明確な定義はありません。公式のものに最も近いのはperlpragmaです。

  • これらは通常、パーサーの言語または動作を変更します。
  • それらの効果は通常、字句スコープです。

私は個人的にそれらが要件であると信じています(そしてperlpragmaもそうです)が、コアモジュールのvarssubsは、それらの効果が字句スコープされていなくてもプラグマであると文書化されています。

baselibはどちらの基準にも一致しません。彼らがしていることは、「Perl自体」に情報を提供することです。それもプラグマとしての資格があると思います。

私のモジュールuse syntax qw( loop );は実用的だと思います。(恥知らずなプラグ!)

于 2013-03-14T22:18:43.997 に答える
1

この名前は多くのコンテキストでよく使用されますが、私は通常、プラグマを、perldocperlpragma%^Hに記載されているヒントハッシュを使用するものと考えています。これは、主な違いは、アクションがコンパイル時に行われなければならないことを意味します。(BEGINではない)動作しませんが動作します。これは、「実用的なモジュール」(この定義による)と他のモジュールの主な違いです。この定義では、、、またはのいずれもプラグマではありません。userequirevarssubsbaselib

于 2013-03-15T01:37:04.660 に答える