Вам нужно будет создать свой собственный комбинированный список, чтобы достичь этого. Если уровней иерархии не много, вы можете разместить метку в виде элементов комбинированного списка и изменить свойства шрифта, такие как курсив или полужирный. Но это просто и не причудливо.
Можно поместить это наверху Constants.pm
:
package main;
В этом случае все переменные, которые Вы определяете, будут в main
пространство имен:
$main::x
или если Вы чувствуете себя храбрыми:
package;
В этом случае все переменные, которые Вы определяете, будут в пустом пространстве имен:
$::x
Отметьте то использование package
без пространства имен препятствуется и будет, по-видимому, удерживаться от использования в некоторых версиях Perl. Посмотрите кавычку ниже.
Заключение в кавычки от man perlfunc
:
package NAMESPACE package Declares the compilation unit as being in the given namespace. The scope of the package declaration is from the declaration itself through the end of the enclosing block, file, or eval (the same as the "my" operator). All further unqualified dynamic identifiers will be in this namespace. A package statement affects only dynamic variables--including those you've used "local" on--but not lexical variables, which are cre? ated with "my". Typically it would be the first decla? ration in a file to be included by the "require" or "use" operator. You can switch into a package in more than one place; it merely influences which symbol table is used by the compiler for the rest of that block. You can refer to variables and filehandles in other packages by prefixing the identifier with the package name and a double colon: $Package::Variable. If the package name is null, the "main" package as assumed. That is, $::sail is equivalent to $main::sail (as well as to $main'sail, still seen in older code). If NAMESPACE is omitted, then there is no current pack? age, and all identifiers must be fully qualified or lexicals. However, you are strongly advised not to make use of this feature. Its use can cause unexpected behaviour, even crashing some versions of Perl. It is deprecated, and will be removed from a future release.
Править: Этот вопрос мог бы быть полезным также: Как я использую константы от модуля Perl?
Не говорите никому, что я сказал Вам, что это, но специальные переменные Perl доступно везде. Вы, вероятно, заметили, что это не работает:
{ package Foo;
our $global = 42; }
{ package Bar;
say "global is $global"; }
Поэтому $global
на самом деле назван $Foo::global
. Вы также, вероятно, заметили, что это "правило" не относится к вещам как @INC
, %ENV
, $_
, и т.д. Поэтому те переменные, как всегда предполагается, находятся в main
.
Но на самом деле, это - больше, чем просто те переменные. Весь шарик "вызывается" в main
. Это означает, что можно записать что-то вроде этого:
{ package Constants;
$_{PI} = 3.141592; }
{ package Foo;
say "pi is $_{PI}"; }
и это будет работать.
(То же касается $ENV
, &INC
, и т.д.)
Если Вы когда-нибудь сделаете то это в реальном коде, однако, ожидает, что кто-то убьет Вас :) Хорошо знать, тем не менее, на всякий случай, что Вы видите, что кто-то еще делает его.
Средство экспорта выезда и perlmod
страница справочника.
Можно использовать Средство экспорта как это:
В Constants.pm:
#Constants.pm
require Exporter;
@ISA = qw(Exporter);
@EXPORT = qw($h0 $scale);
@EXPORT_OK = qw(myfunc);
$h0 = 0;
$scale = 20;
sub myfunc {...}
Примечания:
* &
в &myfunc
в @EXPORT
массив является дополнительным, и он рекомендовал не использовать его. * Это экспортирует $h0
и $scale
по умолчанию, и &myfunc, только если это требуют явно (см. ниже, как указать, какие символы импортируются клиентским модулем),
И затем в модуле, который импортирует Constants.pm и хочет использовать $h0
, $scale
или &myfunc
Вы добавляете следующее для импорта всех символов, которые находятся в @EXPORT
в Constants.pm.
#MyModule.pm
use Constants qw(;
Если Вы хотите импортировать только часть использования символов:
#MyModule.pm
use Constants qw($h0);
И наконец, если Вы не хотите импортировать какое-либо использование символов Constant.pm:
#MyModule.pm
use Constants ();