小编Sin*_*nür的帖子

我是否需要在Perl正则表达式文字中转义分号?

有人告诉我,我需要在Perl正则表达式文字中转义分号.也就是说,要匹配包含分号的行,我应该使用/\;/而不是/;/.

从我读过的内容来看,分号在正则表达式文字中没有特殊含义,因此转义它似乎是不必要的.我做了一些实验,/;/似乎工作正常.打开警告并且use strict;pragma生效,perl不抱怨.

有什么理由/\;/比为什么好/;/?这个版本是依赖的吗?

regex syntax perl escaping

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

如何使用Perl绘制时间序列图?

我有一些来自数据库(SQLite)的数据,将值(整数)映射到日期.日期是具有以下格式的字符串:YYYY-MM-DD hh:mm.日期不均匀分布.我想绘制一个带有日期的线图X和值Y.使用Perl最简单的方法是什么?

我试过DBIx :: Chart但是我无法让它识别我的日期.我也试过GD :: Graph,但正如文档所说:

GD :: Graph不支持数值x轴.X轴的数据应相等

perl plot graph

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

如何使用Getopt :: Std设置默认值?

我试图在我的Perl脚本中使用Getopt :: Std从命令行收集值.

use Getopt::Std;
$Getopt::Std::STANDARD_HELP_VERSION = 1;
getopts('i:o:p:');
my $inputfile = our $opt_i;
my $outputfile = our $opt_o;
my $parameter_value = our $opt_p;
Run Code Online (Sandbox Code Playgroud)

这里前两个变量($ inputfile,$ outputfile)是必需的,但最后一个变量($ parameter_value)是可选的,可以忽略.

我试图-p在命令行忽略该标志时默认将一些值设置为最后一个变量($ parameter_value).

我试过用这个:

my $parameter_value = our $opt_p || "20";
Run Code Online (Sandbox Code Playgroud)

在命令行中忽略-p标志时,它传递正确的值.但问题是当我从命令行提供一些值时(例如-p 58),相同的值20被传递给程序而不是我从命令行传递的58.

能否指出我在这里犯的错误,请你帮帮我吧?

谢谢.

perl getopt

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

我可以在Perl中动态指定的类中访问静态方法吗?

是否可以在Perl中动态指定一个类并访问该类中的静态方法?这不起作用,但说明了我想做的事情:

    use Test::Class1;  
    my $class = 'Test::Class1';  
    $class::static_method();    
Run Code Online (Sandbox Code Playgroud)

我知道我可以这样做:

    $class->static_method();  
Run Code Online (Sandbox Code Playgroud)

并忽略传递给static_method的类名,但我想知道是否有更好的方法.

oop perl

10
推荐指数
3
解决办法
2906
查看次数

如何在Perl中存储伪随机生成器的状态?

有没有办法在Perl中存储内置的伪随机数生成器的当前状态,这样当我的程序再次运行时,它可以从它停止的位置获取序列而不是从新的序列开始?

现在,我存储的位置和初始种子一样,然后丢弃我已经看过的类似于以下内容的初始段:

sub consume_upto_n {
    my ($seed, $n) = @_;
    $n = 1 unless defined $n and $n >= 1;
    srand $seed;
    rand for 1 .. $n - 1;
    return;
}
Run Code Online (Sandbox Code Playgroud)

例如:

srand 0x18;
my @v = map { rand } 1 .. 5;
Run Code Online (Sandbox Code Playgroud)

后来:

consume_upto_n(0x18, 3);
my @z = map { rand } 3 .. 5;
Run Code Online (Sandbox Code Playgroud)

然后$z[0] == $v[2],$z[1] == $v[3]等等

perl srand random-seed

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

在Perl中,为什么复制弱引用会创建一个正常的,强大的引用?

Scalar :: Util :: weaken说:

注意:复制弱引用会创建一个正常的强引用.

我无法理解为什么Perl会这样处理它.在我的应用程序中,我 weaken用来打破周期.有时我必须削弱那些已经很弱的引用,如果Perl不这样做的话.

perl weak-references

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

如何在Perl中捕获"无法解码JSON"错误消息?

所以我试图加载测试REST API,它返回一个JSON值.

为此,我创建了perl脚本的多个实例.

Perl脚本基本上调用该URL,并尝试decode_json.显然,当产生大量负载时,它会失败.

现在我面临的问题是 - 命令提示符上显示错误,但不会在文件中写入该错误消息.

错误消息是

malformed JSON string, neither array, object, number, string or atom, at character offset 0 (before "Can't connect to 209...") at json_load_test.pl line 39.

在第39行以下的所有三次尝试中,指的是:

decode_json($actual_response);
Run Code Online (Sandbox Code Playgroud)

我只是在命令提示符下运行脚本:

perl json_load_test.pl >> logs/output.txt 
Run Code Online (Sandbox Code Playgroud)

我期待在"output.txt"中写下错误消息

我的三次失败尝试如下.

尝试1:

my $ua = LWP::UserAgent->new;
$ua->timeout(3);    
$ua->env_proxy;        
my $response = $ua->get("http://$j_env/jobs/all.json?status=active");
my $actual_response=$response->decoded_content;
decode_json($actual_response);
if ($? == -1)
{print "\n Failed to execute: $!\n"; }
Run Code Online (Sandbox Code Playgroud)

尝试2:

my $ua = LWP::UserAgent->new;
$ua->timeout(3);    
$ua->env_proxy;        
my $response …
Run Code Online (Sandbox Code Playgroud)

perl json load-testing stderr

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

在Perl中,我如何检查字符串中指定的编码是否有效?

说,我有一个接收两个参数的子:编码规范和文件路径.然后sub使用该信息打开一个文件进行读取,如下所示,其中包含以下内容:

run({
    encoding => 'UTF-16---LE',
    input_filename => 'test_file.txt',
});

sub run {
    my $args = shift;
    my ($enc, $fn) = @{ $args }{qw(encoding input_filename)};

    my $is_ok = open my $in,
        sprintf('<:encoding(%s)', $args->{encoding}),
        $args->{input_filename}
    ;
}
Run Code Online (Sandbox Code Playgroud)

现在,这呱呱叫:

Cannot find encoding "UTF-16---LE" at E:\Home\...

在插入第二个参数之前,确保保持有效编码规范的正确方法是什么?$args->{encoding}open

更新

提供以下信息是希望它在某些时候对某人有用.我还要提交错误报告.

Encode :: Alias的文档根本没有提及find_alias.随便看看Encode/Alias.pm我的Windows系统显示:

# Public, encouraged API is exported by default

our @EXPORT =
  qw (
  define_alias
  find_alias
);
Run Code Online (Sandbox Code Playgroud)

但请注意:

#!/usr/bin/env perl

use 5.014; …
Run Code Online (Sandbox Code Playgroud)

perl file-io character-encoding

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

perr中qr //的含义是什么?

我是perl的新手,并试图设计一个我遇到过的词法分析器:

my @token_def =
 (
        [Whitespace => qr{\s+},     1],
        [Comment    => qr{#.*\n?$}m,   1],
  );
Run Code Online (Sandbox Code Playgroud)

甚至在经过多个网站后,我都不理解其含义.

regex perl

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

Raku 的 Unicode 字符文档在哪里,例如 "»" ?

Raku 使用 Unicode 字符,如“ »”。很难搜索有关这些字符的信息,因为它们似乎无法在 Google 中搜索到,而且我真的不知道它们的名字。例如,类似于“ »”中的内容:

$/.make: $<pair>».made
Run Code Online (Sandbox Code Playgroud)

是否有Raku 中使用的所有特殊 Unicode 字符的描述性列表?

operators raku

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