小编fri*_*edo的帖子

Perl中CHECK,UNITCHECK和INIT块的用处是什么?

我知道他们都做了什么,但从来没有发现自己处于我需要的任何一个状态.我曾BEGIN多次使用过块,偶尔使用过块END.BEGIN当您需要在代码运行之前调整环境时,它特别有用,并且我已经END在某些调试情况下用于捕获重要的状态信息,以便难以跟踪致命错误.

你曾经使用过CHECK,UNITCHECK或者INIT?如果是这样,那该怎么办?并且BEGIN由于某种原因,一块块还不够用吗?

块的文档在PerlDoc上.

perl compilation

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

Perl:如何在不读取和复制整个文件的情况下删除文件的第一行

我确实在目录中有一大堆文件,并且我想从每个文件中删除第一行(包括回车).我可以将整个文件读入一个字符串数组,并将除了第一个元素之外的所有元素写入一个新文件,但这对我来说看起来有点麻烦有更好的方法吗?哦,首选的语言是Perl.

perl line

14
推荐指数
5
解决办法
2万
查看次数

如何在Perl API中反省正则表达式

我正在研究一些需要序列化Perl正则表达式的代码,包括任何正则表达式标志.只支持一部分标志,因此我需要检测何时不支持的标志/u位于正则表达式对象中.

当前版本的代码执行此操作:

static void serialize_regex_flags(buffer *buf, SV *sv) {
  char flags[] = {0,0,0,0,0,0};
  unsigned int i = 0, f = 0;
  STRLEN string_length;
  char *string = SvPV(sv, string_length);
Run Code Online (Sandbox Code Playgroud)

然后手动处理stringchar-by-char以查找标志.

这里的问题是正则表达式标志的字符串化从(例如在Perl 5.14中)从例如(?i-xsm:foo)改变(?^i:foo),这使解析成为一种痛苦.

我可以查看版本perl,或者只是编写解析器来处理这两种情况,但有些东西告诉我必须有一种更好的内省方法.

c regex perl introspection xs

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

为什么DateTime会在时间戳中添加T分隔符?

我的代码:

print DateTime->now;
Run Code Online (Sandbox Code Playgroud)

响应:

2012-08-17T20:16:37

为什么有T?有没有我忘记的选择?

perl datetime

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

如何扩展Moose的自动pragma导出?

你知道如何驼鹿自动打开strictwarnings导入过程中?我希望通过启用autodieuse feature ':5.10'在我的Moose类中扩展该行为.

我已经跟踪了Moose在这里做的事情,Moose::Exporter其中组装了importMoose的一个自定义子组件,用于调用strict->importwarnings->import调用类.

但是,我无法找到一种以Moose-ish方式扩展此导入方法的方法.

我该怎么处理?

http://www.friedo.com/bullwinkle.gif

perl moose mop

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

哪个cpan模块最适合阅读和学习?

我最近查看了DBIx :: Class的源代码,发现我不理解一件事(虽然我在尝试时掌握了几个技巧).

所以我的问题是:对于想要学习的人,以及以什么顺序阅读哪些CPAN模块?

perl cpan

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

有什么区别:Args和:Catalyst中的CaptureArgs?

我通常可以通过随机尝试这两种选项的不同排列来获得我想要的行为,但我仍然不能说我确切地知道他们做了什么.是否有一个具体的例子来证明这种差异?

perl catalyst

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

如何在Mojolicious模板中使用新的语法功能

我想在我的Mojo模板中使用花哨的后缀解除引用.我想我能做到

% use experimental 'postderef';
Run Code Online (Sandbox Code Playgroud)

在每个模板文件的顶部,但这似乎重复和跛脚.有没有办法让Mojolicious将我的pragma首选项导入每个模板的词法范围?

perl mojolicious

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

在Perl中进行单元测试时提示用户

我正在编写一个模块,它具有单元测试,需要运行某个外部服务器程序,如果是,则需要知道主机名和端口.

我想在运行测试套件时提示输入此信息,如果用户拒绝提供测试套件,请跳过这些测试.

处理这个问题的最佳方法是什么?

谢谢

perl unit-testing

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

Mojolicious :: Lite with Template Toolkit

我正在尝试使用Template Toolkit作为Mojolicious :: Lite中的默认渲染器.是)我有的:

use strict;
use warnings;

use Mojolicious::Lite;
use Mojolicious::Plugin::TtRenderer;
plugin tt_renderer => { template_options => { INCLUDE_PATH => './tmpl', DEBUG => 1 } };

get '/' => sub {
  my $self = shift;

  $self->render( 'index' );
};

app->renderer->default_handler( 'tt' );
app->start;
Run Code Online (Sandbox Code Playgroud)

当我尝试点击测试服务器时,我得到:

[Fri Oct 12 14:02:02 2012] [info] Listening at "http://*:3000". 
Server available at http://127.0.0.1:3000. 
[Fri Oct 12 14:02:08 2012] [debug] Your secret passphrase needs to be changed!!! 
[Fri Oct 12 14:02:08 2012] [debug] GET / (Mozilla/5.0 …
Run Code Online (Sandbox Code Playgroud)

perl web-frameworks template-toolkit mojolicious

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