小编Gri*_*nnz的帖子

覆盖模块中定义但在运行时阶段使用的函数?

让我们做一个非常简单的事情,

# Foo.pm
package Foo {
  my $baz = bar();
  sub bar { 42 };  ## Overwrite this
  print $baz;      ## Before this is executed
}
Run Code Online (Sandbox Code Playgroud)

无论如何,我可以从test.pl运行代码中更改$baz设置并导致Foo.pm在屏幕上打印其他内容吗?

# maybe something here.
use Foo;
# maybe something here
Run Code Online (Sandbox Code Playgroud)

在编译器阶段是否可以强制上述内容打印7

perl compilation

20
推荐指数
4
解决办法
592
查看次数

是否在Perl6的角色中强制使用存根方法的类型签名?

我试图用Perl6做一些OOP并且在角色方面遇到一些麻烦.我试图以类似于Java接口的方式使用它们,在那里我只有方法签名,必须由任何扮演角色的类实现.我使用带有类型参数的stubbed方法并返回.

我注意到类型签名没有被强制执行,只有方法的名称.

示例脚本:

#!/usr/bin/env perl6
use v6;

role MyRole {
    method intAdder( Int $a, Int $b --> Int ) { ... }
}

# this does the role and the method signature matches
class MyClass1 does MyRole {
    method intAdder( Int $a, Int $b --> Int ) { return $a+$b }
}

# this does the role and the method signature does NOT match
# why is this allowed?
class MyClass2 does MyRole {
    method intAdder( Str $a --> Str …
Run Code Online (Sandbox Code Playgroud)

rakudo perl6

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

Perl6的安装失败,没有注册的操作处理程序

我正在尝试安装Perl6:

perl Configure.pl --backend=jvm --gen-nqp
Run Code Online (Sandbox Code Playgroud)

再传统make&make install

后者 - 其中大部分都会出现此错误:

== Installing modules for JVM
cd modules/zef && sh -c "PATH='/illumina/runs/Scripts/perl6/rakudo-star-2018.10/install/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/illumina/runs/RNASeq/stringtie-1.3.3b.Linux_x86_64:/illumina/runs/RNASeq/subread-1.6.0-Linux-x86_64/bin:/illumina/runs/RNASeq/STAR-master/bin/Linux_x86_64:/illumina/runs/RNASeq/hisat2-2.1.0:/home/703404669/Scripts/vcftools-vcftools-ea875e2/src/cpp:/illumina/runs/RNASeq/FastQC:/home/703404669/.local/bin:/home/703404669/bin' /illumina/runs/Scripts/perl6/rakudo-star-2018.10/install/bin/perl6-j -Ilib bin/zef install ."
===SORRY!===
Error while compiling op nativecallinvoke, no registered operation handler
make: *** [modules-install-j] Error 1
Run Code Online (Sandbox Code Playgroud)

我仍然是Perl6的新手,我不知道如何处理这个错误,它不会出现在搜索引擎上.

如何通过此错误安装perl6?

perl6

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

Raku 总是解析吗?

raku -version 这是基于实施 Perl 6.d 的 MoarVM 2020.01.1 版构建的 Rakudo 2020.01 版。

目前看起来我无法启动任何运行时间低于 130 毫秒(主要是启动时间)的 Raku Perl6 程序。
- Raku 总是在程序启动时重新解析完整的源代码吗?
- Raku 缓存任何字节码吗?
- 所以即使是在线运行也总是需要 >= 130 毫秒?

time raku --stagestats hello_world.pl
Stage start      :   0.000
Stage parse      :   0.133
Stage syntaxcheck:   0.000
Stage ast        :   0.000
Stage optimize   :   0.002
Stage mast       :   0.006
Stage mbc        :   0.001
Stage moar       :   0.000
hello world
hello world
TEST
hello world

real    0m0,183s
user    0m0,231s
sys 0m0,016s
Run Code Online (Sandbox Code Playgroud)

performance moarvm raku

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

使用 Mojo::Log 的正确方法是什么?

我想使用 MojoliciousMojo::Log工具来登录我的 Mojolicious Web 应用程序。但是,我不确定使用它的正确/正确方法。

文档显示它直接从脚本中使用,但没有说明它是否是线程安全的或在控制器之间共享是否安全,或者每个控制器是否应该实例化自己的Mojo::Log对象(在这种情况下,所有控制器都可以安全地使用它吗?指向同一个日志文件?)。

使用此记录器的正确方法是什么?

perl mojolicious

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

Mojolicious(hypnotoad)-实施TLS v1.2

如何强制Mojolicious(hypnotoad)应用使用TLS v1.2?

mojo version 输出:

CORE
  Perl        (v5.16.3, linux)
  Mojolicious (8.0, Supervillain)

OPTIONAL
  Cpanel::JSON::XS 4.04+  (n/a)
  EV 4.0+                 (4.22)
  IO::Socket::Socks 0.64+ (n/a)
  IO::Socket::SSL 2.009+  (2.060)
  Net::DNS::Native 0.15+  (n/a)
  Role::Tiny 2.000001+    (2.000005)
Run Code Online (Sandbox Code Playgroud)

hypnotoad conf:

{
     hypnotoad => {
         listen => ['https://myserver.domain.com:xxxx?cert=/path/to/cert/file.cer&key=/path/to/key/file.key'],
     }
}
Run Code Online (Sandbox Code Playgroud)

这就是我开始催眠的方法:

hypnotoad -f script/apps
Run Code Online (Sandbox Code Playgroud)

我已经IO::Socket::SSL按照某处的建议更新了模块。没用

非常感谢任何指导。

perl ssl mojolicious hypnotoad tls1.2

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

在 mojolicious 渲染后做一些事情

HypnoToad 发送页面后如何让我的代码执行某些操作?(注:我正在回答我自己的问题。我发布此内容是因为 StackOverflow 向我指出了上一个问题,该问题并未直接解决我的问题,尽管它确实包含了我需要的线索。)

示例代码:

use Mojolicious::Lite;
get "/index" => sub {
   my $c = shift;
   $c->render("renderThis");
   # Do something after rendering
};
app->start('daemon', '-l', 'http://*:8080');

__DATA__
@@ renderThis.html.ep
% layout  "template" ;
<h1>Hello World</h1>

@@ layouts/template.html.ep
<!DOCTYPE html>
<html><head></head><body>
%= content
</body></html>
Run Code Online (Sandbox Code Playgroud)

render 似乎缓冲其 http 输出并在代码块完成后发送它。我希望在页面发送后执行一些操作。可以通过将以下内容替换“Do some”注释来观察缓冲。

   sleep 15;
   say "Wow, that was a long time!";
Run Code Online (Sandbox Code Playgroud)

我用的是win7,所以纯unix的解决方案不起作用。

perl mojolicious mojolicious-lite

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

网上有什么正式的perl文档?

我发现具有高可用性级别的perldoc.pl是最新的5.30.0版本。

Perl.org链接到perldoc.perl.org,该版本停止在5.26.1版。但是另一方面,它链接到Download(版本5.28.2)到Strawberry Perl(实际上是5.30.0版本),我感到很困惑。

我已经知道Perl 6是完全不同的语言。在5.26。*之后可能还会有其他语言障碍吗?

背景

由于我很少使用它,所以程序更新是重新输入Perl的起点。这就是为什么我对在安装之前研究delta文档 感兴趣的原因,而且很难找到该delta。

perl perldoc

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

使用 Mojo::UserAgent 并访问 JSON 作为响应?

如何在 mojo 响应中访问 JSON?

$txn = $ua->post( $url, $headers, json => {json} )
Run Code Online (Sandbox Code Playgroud)

从 txn 获取 JSON 响应的方法是什么?

perl json http mojolicious mojo-useragent

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

Perl:表达式优​​先级和评估

我有以下代码:

$codelist = 00;

$OK = '0';
$OK = () = $codelist =~ /$OK/g;

print "$OK\n"; #answer is 2.
Run Code Online (Sandbox Code Playgroud)

表达式$OK = () = $codelist =~ /$OK/g是如何计算的?优先顺序是什么?

perl

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

?匹配的表达式不在Perl中打印

我很少写Perl,也不知道如何表达问题。我使用Perl作为浏览文件的“过滤器”。

echo "this is a test" | perl -pe 's/(this).*(test)?/\1 \2/'
Run Code Online (Sandbox Code Playgroud)

仅返回

this
Run Code Online (Sandbox Code Playgroud)

我在寻找

this test
Run Code Online (Sandbox Code Playgroud)

regex perl

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

Perl:使用通配符检查文件是否存在

我正在尝试使用 -e 来检查文件是否存在,$name 是用户指定的任何输入,"_file_"是固定的,而 * 可能是任何可能的。目前它无法检测到该文件。

if (-e $name."_file_*.txt)
{
   do something;
}
Run Code Online (Sandbox Code Playgroud)

perl

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