perlpragma | Participants
|
- Statistics
- Participants
- Translate into Russian
- Translation result
- Translation complete.
If you do not want to register an account, you can sign in with OpenID.
perlpragma | ||
=head1 NAME | ||
perlpragma - how to write a user pragma | ||
=head1 DESCRIPTION | ||
A pragma is a module which influences some aspect of the compile time or run | Прагма - это модуль, который влияет на некоторые моменты во время компиляции и во время выполнения Perl-кода. Пример прагмы: C<strict>или C<warnings>. С выходом Perl 5.10 вы не ограничены в разработке прагм, теперь можете создавать пользовательские прагмы, которые будут менять поведение пользовательских функций в лексическом контексте. | |
=head1 A basic example | ||
For example, say you need to create a class implementing overloaded | Например, вам нужно создать класс, который реализует перегрузку математических операторов, и вы хотели бы использовать свою прагму с функционалом похожим на C<use integer;>. Пример кода: | |
use MyMaths; | use MyMaths; my $l = MyMaths->new(1.2); print "A: ", $l + $r, "\n"; use myint; { print "D: ", $l + $r, "\n"; no myint; | |
to give the output | ||
A: 4.6 | ||
I<i.e.>, where C<use myint;> is in effect, addition operations are forced | I<В примере>, в котором используется C<use myint;>, оператор сложения работает с целыми числами, значения по умолчанию не определены. Поведение по умолчанию будет восстановлено C<no myint;> | — не нравится фраза: поскольку ... — sharifulin |
The minimal implementation of the package C<MyMaths> would be something like | Минимальная реализация пакета C<MyMaths> будет примерно такой: | |
package MyMaths; | package MyMaths; sub new { 1; | |
Note how we load the user pragma C<myint> with an empty list C<()> to | Примечание. При загрузке пользовательской прагмы C<myint> без параметров С<()> функция C<import> не будет вызвана. | |
The interaction with the Perl compilation happens inside package C<myint>: | Взаимодействие с Perl во время компиляции внутри пакета C<myint>: | |
package myint; | package myint; use strict; sub import { sub unimport { sub in_effect { 1; |

— может собственные? — sharifulin