2013-03-14 18 views

Odpowiedz

7

Nie ma solidnej definicji pragmy. Najbliższe oficjalne jest w perlpragma.

  • Zazwyczaj modyfikują język lub zachowanie analizatora składni.
  • Ich efekt jest zazwyczaj leksykalny.

Ja osobiście wierzę, to są wymagania (i wydaje się, że perlpragma robi też), ale podstawowe moduły vars i subs są udokumentowane być pragma chociaż ich wpływ nie jest zawężona leksykalnie.

base i nie pasują do żadnego z kryteriów. To, co robią, to dostarczanie informacji do "samego Perla". Myślę, że to również kwalifikuje się jako pragma.

Uważam, że mój moduł use syntax qw(loop); jest pragmatyczny. (Bezwstydna wtyczka!)

+0

Zapomniałem o tym, że faktycznie przykrywam base.pm. Rozwiązałem to zaniedbanie. – ikegami

+0

Mój komentarz stał się odpowiedzią własną :-) –

1

Podczas gdy nazwa jest często używana w wielu kontekstach, zwykle myślę o pragmie jako o czymś, co używa podpowiedzi hash %^H, jak udokumentowano w perldoc perlpragma. Oznacza to, że główną różnicą jest to, że akcja MUSI być w czasie kompilacji; use działa, gdy require (nie w BEGIN) nie. Jest to kluczowa różnica między "modułem pragmatycznym" (przez tę definicję) i innymi modułami. Zgodnie z tą definicją żaden z vars,nie może być pragma.

Powiązane problemy