小编hau*_*kex的帖子

@ISA vs use base vs use parent

穿过这个小金块......我想我已经弄清楚了,但看看是否有人可以放下更多的光.

我在PERL5LIB环境变量中有一个用于记录的模块.它在e:/Scripts/Log/Logger.pm.以下是摘录:

package Log::Logger;
...

package Log::NullLogger;
use base 'Log::Logger';
...

package Log::FileLogger;
use base 'Log::Logger';
...

package Log::DateFileLogger;
use base 'Log::FileLogger';
...

package LogTester;
use Data::Dump 'dump';
test() unless caller();
sub test {
    warn dump \%INC;
    ...
}
Run Code Online (Sandbox Code Playgroud)

我想对这个模块进行一些更改,所以我将其复制到e:/Test/Log/Log/Logger.pm并开始进行更改和测试...我添加了一个新类并更改了Log::Logger包中的继承例程...

package BasicFormatter;
...
Run Code Online (Sandbox Code Playgroud)

但我的测试很奇怪.一些新代码正在使用,有些则没有.转储%INC有:

"Log/Logger.pm" => "e:/Scripts/Log/Logger.pm"
Run Code Online (Sandbox Code Playgroud)

...... 旧模块!从我可以告诉,use base 'Log::Logger'走了出去,并重新加载Log/Logger.pmPERL5LIB,替换只有在它的包装(即package BasicFormatter由新模块来了,但其他所有的包都是从旧的模块).

我读到了use parent,当我替换我时use base,use parent …

perl

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

输出文件为空白

我不知道为什么以下代码输出一个空白文件.我正在运行Windows 8.我已经从这个社区获得了以前perl帮助的帮助,这正是我能够与我收到的帮助一起提供的.但是,我无法弄清楚这个脚本出错的地方.

#! perl
use strict;
use warnings;
use HTML::FormatText;
use LWP::Simple;

my $dateField = 'date=2018-12-31';
my $currency  = "USD";
my $filename = 'C:\Users\Name\Desktop\doc3.txt';
my $address = "https://www.oanda.com/rates/api/v1/rates/$currency.csv?api_key=gpolonsky&decimal_places=4&$dateField&fields=averages&quote=USD&quote=AUD&quote=BRL&quote=CAD&quote=GBP&quote=CHF&quote=CNY&quote=DKK&quote=HKD&quote=INR&quote=IDR&quote=ILS&quote=JPY&quote=MXN&quote=NOK&quote=PHP&quote=PLN&quote=SGD&quote=sKK&quote=ZAR&quote=KRW&quote=SEK&quote=TWD&quote=THB&quote=EUR&quote=MYR&quote=NZD&quote=SAR&quote=TRY&quote=RUB&quote=CZK&quote=AED&quote=CLP&quote=EGP&quote=MAD&quote=NGN&quote=OMR&quote=QAR";
my $content = get($address);
my $s = 1;

defined $content or die "Cannot read '$address': $!";
$content =~  s/^[^\n]*\n//s; 
$content =~  s/^/20181231,/gm; # The m option makes ^ match at the start of each line
$content =~  s/,2018-12-3[0-9]T[0-9][0-9]:[0-9][0-9]:[0-9][0-9]\+0000*//g;
$content =~  s/([A-Z][A-Z][A-Z]),[0-9]*\.[0-9][0-9][0-9][0-9]/$1/g;

my $string = HTML::FormatText->format_string(
    $content,
    leftmargin  =>  0,
    rightmargin => 23, …
Run Code Online (Sandbox Code Playgroud)

perl

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

如何在perl中捕获".model"

我的输入文件包含以下内容:

1.1 CORE VT MODEL                             
.model ABC
model selector
Run Code Online (Sandbox Code Playgroud)

我用这段代码来捕获".model"字符串

if ($array=~ "\.model")
Run Code Online (Sandbox Code Playgroud)

但我的输出文件在我的输入文件中捕获所有"模型"字符串.那么如何在输入文件中捕获".model"字符串?非常感谢

perl

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

标签 统计

perl ×3