有人告诉我,我需要在Perl正则表达式文字中转义分号.也就是说,要匹配包含分号的行,我应该使用/\;/而不是/;/.
从我读过的内容来看,分号在正则表达式文字中没有特殊含义,因此转义它似乎是不必要的.我做了一些实验,/;/似乎工作正常.打开警告并且use strict;pragma生效,perl不抱怨.
有什么理由/\;/比为什么好/;/?这个版本是依赖的吗?
我有一些来自数据库(SQLite)的数据,将值(整数)映射到日期.日期是具有以下格式的字符串:YYYY-MM-DD hh:mm.日期不均匀分布.我想绘制一个带有日期的线图X和值Y.使用Perl最简单的方法是什么?
我试过DBIx :: Chart但是我无法让它识别我的日期.我也试过GD :: Graph,但正如文档所说:
GD :: Graph不支持数值x轴.X轴的数据应相等
我试图在我的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中动态指定一个类并访问该类中的静态方法?这不起作用,但说明了我想做的事情:
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的类名,但我想知道是否有更好的方法.
有没有办法在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会这样处理它.在我的应用程序中,我
weaken用来打破周期.有时我必须削弱那些已经很弱的引用,如果Perl不这样做的话.
所以我试图加载测试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"中写下错误消息
我的三次失败尝试如下.
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)
my $ua = LWP::UserAgent->new;
$ua->timeout(3);
$ua->env_proxy;
my $response …Run Code Online (Sandbox Code Playgroud) 说,我有一个接收两个参数的子:编码规范和文件路径.然后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的新手,并试图设计一个我遇到过的词法分析器:
my @token_def =
(
[Whitespace => qr{\s+}, 1],
[Comment => qr{#.*\n?$}m, 1],
);
Run Code Online (Sandbox Code Playgroud)
甚至在经过多个网站后,我都不理解其含义.
Raku 使用 Unicode 字符,如“ »”。很难搜索有关这些字符的信息,因为它们似乎无法在 Google 中搜索到,而且我真的不知道它们的名字。例如,类似于“ »”中的内容:
$/.make: $<pair>».made
Run Code Online (Sandbox Code Playgroud)
是否有Raku 中使用的所有特殊 Unicode 字符的描述性列表?