小编use*_*346的帖子

当我使用字符串变量时,为什么不是我的重载::常量子触发?

我正在尝试在正则表达式中重载常量.这是我的Tagger包:

package Tagger;
use overload;

sub import { overload::constant 'qr' => \&convert }

sub convert {
    my $re = shift;
    $re =~ s/\\nom/((?:[A-Z]{1}[a-z]+\\s*){2,3}(\\((\\w|\\s)+\\)+?)*)/xg;
    return $re;
}

1;
Run Code Online (Sandbox Code Playgroud)

这是我想要触发重载的子例程:

sub ChopPattern {
    my $string= shift;
    my $pattern = shift;

    if($string =~ m/$pattern/) {
        $string =~ s/$&/ /g;
        return ($string, $&);
    } else {
        return ($string, '');
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的测试:

$test = "foo bar Max Fast bar foo";
($test, $name) = ChopPattern($test, '\nom');
say $test;
say $name;
Run Code Online (Sandbox Code Playgroud)

如果我硬连线测试模式\nom,则在子程序的匹配中: …

perl

10
推荐指数
2
解决办法
90
查看次数

Base.pm的特殊处理?

我在与要使用它的Perl程序相同的目录中创建了一个名为Base.pm的模块,但似乎没有加载模块.将模块的名称更改为除Base之外的任何内容,并且工作正常.Base.pm有什么特别之处,如何覆盖这种行为?感谢您的任何见解.

package Base;
use strict;
use Exporter;
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
$VERSION     = 1.00;
@ISA         = qw(Exporter);
@EXPORT      = qw(func);
sub func { return "foo"; }
1;
Run Code Online (Sandbox Code Playgroud)

use Base;
print func();
Run Code Online (Sandbox Code Playgroud)

产量

Undefined subroutine &main::func called at test0.pl line 2.
Run Code Online (Sandbox Code Playgroud)

package Case;
use strict;
use Exporter;
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
$VERSION     = 1.00;
@ISA         = qw(Exporter);
@EXPORT      = qw(func);
sub func { return "foo"; }
1;
Run Code Online (Sandbox Code Playgroud)

use Case;
print func();
Run Code Online (Sandbox Code Playgroud)

产量 …

perl

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

标签 统计

perl ×2