标签: perl-exporter

在Perl中,为什么我需要Exporter?

我的perl\lib文件夹中有一个名为hsfSubs.pm的模块.我在模块中没有任何东西,但子程序和1;最后.

例如,一个子程序被命名pause.我没有实现导入或导出例程.

在我的主要程序中,我只是说use hsfSubs;,我随后可以pause毫无问题地打电话.如果我说的话,同样如此use hsfSubs qw(pause);.

为什么我需要使用出口,@EXPORT@EXPORT_OK等或任何其他并发症?

Stack Overflow上关于Exporter的问题的多个答案告诉我们如何使用它,但我不明白为什么要使用它.

perl module perl-exporter

9
推荐指数
1
解决办法
435
查看次数

从Perl模块导出所有常量(只读变量)的最有效方法是什么

我正在寻找从我的单独模块中导出所有常量的最有效和可读的方法,该模块仅用于存储常量.
例如

use strict;
use warnings;

use Readonly;

Readonly our $MY_CONSTANT1         => 'constant1';
Readonly our $MY_CONSTANT2    => 'constant2'; 
....
Readonly our $MY_CONSTANT20    => 'constant20';
Run Code Online (Sandbox Code Playgroud)

所以我有很多变量,并将它们全部列在我们的内部@EXPORT = qw( MY_CONSTANT1.... );
它会很痛苦.是否有任何优雅的方式导出所有常量,在我的情况下,Readonly变量(强制导出所有,不使用@EXPORT_OK).

perl constants perl-module perl-exporter

8
推荐指数
2
解决办法
566
查看次数

如何在Perl的本地范围内访问导入模块中的变量?

创建Perl Moose模块时遇到问题。

我有一个全局pm模块。

package XYZ;
require Exporter;
our @ISA = qw(Exporter);  ## EDIT missed this line 
our @EXPORT_OK = qw($VAR);
my $VAR1 = 1;
our $VAR = {'XYZ' => $VAR1};
1;
Run Code Online (Sandbox Code Playgroud)

我想进入正在创建$VARMoose模块

package THIS;
use Moose;
use YAML::XS;
sub get_all_blocks{
  my ($self) = @_;
  require $self->get_pkg(); # this returns the full path+name of the above package
  # i cannot use use lib+use since the get_pkg starts complaining 

  our $VAR;
  print YAML::XS::Dump($XYZ::VAR); # this works
  print YAML::XS::Dump($VAR); …
Run Code Online (Sandbox Code Playgroud)

perl moose perl-exporter

3
推荐指数
1
解决办法
525
查看次数

如何在我自己的包中重新定义 sub 但从新包中访问旧包

我有一些代码文件开头像

use my_pck;

BEGIN {
    package my_pck;
    my(@p) = ();
    foreach ( keys(%my_pck::) ) {
        push( @p, "\$$_" ) if (defined $$_);
        push( @p, "\%$_" ) if (%$_);
        push( @p, "\@$_" ) if (@$_);
    }
    # ... some extra
    ( @EXPORT = @p, Exporter::import pal ) if ( $#p >= 0 );
}
use strict;
use warnings;

package my_pck;
Run Code Online (Sandbox Code Playgroud)

这部分我无法更改(除了在“一些额外”中添加一些内容)。

所以现在其中有一个名为“my_today”的子目录,因为我需要package my_pck在任何地方都可以使用它并且在源文件中经常使用它。此方法以“YYYYMMDD”格式给出当前日期。

要检查前一天的一些测试数据,我需要重新定义此方法以也给出前一天的数据。

我试图通过重新定义它

sub my_today {
    my $date = my_pck::my_today();
    $date = my_datefunc($date, "-", 1)  # substracts …
Run Code Online (Sandbox Code Playgroud)

perl package perl-exporter

0
推荐指数
1
解决办法
104
查看次数

标签 统计

perl ×4

perl-exporter ×4

constants ×1

module ×1

moose ×1

package ×1

perl-module ×1