小编kob*_*ame的帖子

为什么要使用警告; 用严格; 在Perl中没有默认值?

我想知道为什么

use warnings;
use strict;
Run Code Online (Sandbox Code Playgroud)

在Perl中不是默认值.每个脚本都需要它们.如果某人(有充分理由)需要禁用它们,则应使用no strict和/或使用某些命令行参数(对于单行).

是否有太多写得不好的CPAN模块(使用"糟糕"表示没有use strict)?或者是因为这会破坏生产中的许多代码?我确信有理由,我想知道.

5.14 IO::File是按需自动加载的,不可能用这些基本的pragma做类似的事情吗?

perl

32
推荐指数
4
解决办法
4622
查看次数

Perl三点运算符......例子

任何人都可以通过一些例子展示.....运营商之间的确切区别吗?

perlop手册页:

如果您不希望它在下一次评估之前测试正确的操作数,就像在sed中一样,只需使用三个点("...")而不是两个.

但到底是什么意思呢?我不明白perlop的例子:

@lines = ("   - Foo",
          "01 - Bar",
          "1  - Baz",
          "   - Quux"
);
foreach (@lines) {
    if (/0/ .. /1/) {
        print "$_\n";
    }
}
Run Code Online (Sandbox Code Playgroud)

...将打印Baz-但为什么呢?更确切地说,为什么Baz不打印两个点而只有...

perl

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

如何让Mason2 UTF-8干净?

重新提出问题,因为

评论:这个问题已经获得了"流行的问题徽章",所以可能我不是唯一没有希望的人.:)

不幸的是,展示完整的问题堆栈导致了一个非常长的问题,这是非常梅森特定的.

首先,只有意见的部分:)

我使用HTML :: Mason多年,现在尝试使用Mason2.在诗人梅森 都在CPAN最先进的框架.没有找到任何比较,开箱即用的东西允许写得如此干净/但非常黑客:)/ web-apps,包括许多电池(记录,缓存,配置管理,基于原生PGSI等......)

不幸的是,作者并不关心其余部分,例如默认情况下,它只是基于ascii, 没有任何手册,常见问题或建议:如何使用unicode

现在的事实.演示.创建一个诗人应用程序:

poet new my #the "my" directory is the $poet_root
mkdir -p my/comps/xls
cd my/comps/xls
Run Code Online (Sandbox Code Playgroud)

并添加到dhandler.mc下面(将说明两个基本问题)

<%class>
    has 'dwl';
    use Excel::Writer::XLSX;
</%class>
<%init>
    my $file = $m->path_info;

    $file =~ s/[^\w\.]//g;
    my $cell = lc join ' ', "ÅNGSTRÖM", "in the", $file;

    if( $.dwl ) …
Run Code Online (Sandbox Code Playgroud)

perl utf-8 mason moose plack

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

Bash变量替换vs dirname和basename

下一个脚本

str=/aaa/bbb/ccc.txt
echo "str: $str"
echo ${str##*/} == $(basename $str)
echo ${str%/*} == $(dirname $str)
Run Code Online (Sandbox Code Playgroud)

生产:

str: /aaa/bbb/ccc.txt
ccc.txt == ccc.txt
/aaa/bbb == /aaa/bbb
Run Code Online (Sandbox Code Playgroud)

问题是:

  • 在bash脚本中,何时建议使用命令dirnamebasename变量替换时为什么?

主要是因为:

str="/aaa/bbb/ccc.txt"
count=10000

s_cmdbase() {
let i=0
while(( i++ < $count ))
do
    a=$(basename $str)
done
}

s_varbase() {
let i=0
while(( i++ < $count ))
do
    a=${str##*/}
done
}

s_cmddir() {
let i=0
while(( i++ < $count ))
do
    a=$(dirname $str)
done
}

s_vardir() {
let i=0
while(( i++ …
Run Code Online (Sandbox Code Playgroud)

bash

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

现代perl - 准备运行应用程序 - 通过示例学习 - 从什么?

我正在学习现代perl - Moose,Plack等.在很多建议中你可以阅读"通过实例学习" - 所以开始搜索一些用Modern perl编写的可立即运行的应用程序.

浏览了很多页面:

还有更多(perl.org等) - 不幸的是 - 我找不到任何用现代perl编写的"准备运行"应用程序.

我没有找到任何Moose/Plack - CMS,既没有ShoppingCart,也没有Blog或任何Web应用程序.很难相信它们不存在,所以我可能在错误的地方寻找.

请问您能指出一些用Modern Perl(不仅仅是框架)编写的"Ready to run"Web应用程序吗?我检查了上面链接中的所有应用程序,没有人是Moose/Plack.


已经找到了"现代"的应用程序

基于催化剂:

其他Moose/Plack应用:

  • 还没有

perl moose plack

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

使用perl后端的Ajax应用程序 - 如何?

已经有关于Perl + AJAX的问题,比如这里,这里这里以及其他几个.他们已经超过2岁了,我希望能有一些新东西.

问题是:

  • 今天使用Perl后端制作AJAX应用程序的首选方法是什么?
  • 是否有一些活跃且常用的Perl模块可帮助构建基于AJAX的应用程序?

对于通常的工作流程:

 if clicked this button (or changed this field.. etc),
 POST these data to the server,
 read the JSON answer,
 and update this/these DIV(s) in a DOM... etc.
Run Code Online (Sandbox Code Playgroud)

这个问题可以归类为模糊,但我真的迷失了,需要帮助:今天在Perl世界中制作AJAX应用程序的最常用方法是什么.

寻找帮助我构建浏览器端javascript的帮助程序模块.

我找到了这些:

这些模块多年来一直没有更新.它们是否稳定并且在使用中?或者他们被弃用了,还有更好的方法吗?(对于现代Perl技术 - 如Plack).

UPDATE

当我读到答案时,我认为主要问题可能在于我的英语.我不知道如何正确表达自己.

我知道Perl.也许我不是专家,但我写了几千行代码.我认识Dancer,并且已经在Mojo ...... :: Lite中编写了一些应用程序.知道JSON {:: XS},我知道AJAX是如何工作的.

现在(由于某种原因)我更喜欢使用Mason2,使用Mason :: Plugin :: RouterSimple和其他几个CPAN模块和Moose.Catalyst,Jifty对我的需求来说太大了.

回到问题:

我最喜欢的JS框架是jQuery,我在几个项目中使用它,用于模态窗口,手风琴,标签等.

我的主要问题正是在Sismetic的回答中.我不想写JavaScript.不喜欢它.(不太了解它,并讨厌我必须写的东西,var arr = new Array(); …

javascript perl

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

如何使用一个"使用""使用"多个模块?

我想在我的所有程序中使用一些包和一些编译指示,例如:

use 5.014;
use warnings;
use autodie;
use My::ModuleA::Something;
use ModuleB qw(Func1 Func2);
Run Code Online (Sandbox Code Playgroud)

我不想在每个模块中重复自己,所以寻找一种方法如何制作一个包,例如My::Common包含上述包的内容以及我的程序中只包含:

use My::Common;
say Func1("hello"); #say enabled and Func1 imported in the My::Common
Run Code Online (Sandbox Code Playgroud)

怎么实现这个?

这是阅读preldoc -f use,perldoc perlmodlib所以我认为我必须"有点"用BEGIN加上需要和导入,但绝对不知道如何.


更新:我已经尝试了基本的东西.

require- 我的prg.pl程序.

require 'mymods.pl';
$var = "hello";
croak "$var\n";
Run Code Online (Sandbox Code Playgroud)

mymods.pl包含

use strict;
use feature 'say';
use Carp qw(carp croak cluck);
1;
Run Code Online (Sandbox Code Playgroud)

不工作.得到错误:

$ perl prg.pl 
String found where operator expected at prg.pl line 3, near "croak "$var\n""
    (Do you …
Run Code Online (Sandbox Code Playgroud)

perl

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

最简单的node.js + nunjucks示例

可能永远不会使用node.js或Nunjucks进行任何真正的开发,但现在由于某种原因需要:

  • 将一些简单的模板预编译到javascript中 Nunjucks
  • 运行下的预编译模板 node.js

我已经做好了:

  • 安装node.jsnpm(例如有nodenpm命令)
  • mkdir njtest && cd njtest
  • 安装了nunjucks npm install nunjucks(有一个node_modules/nunjucks目录)
  • mkdir templates
  • 在模板中,我创建了两个文件index.htmllayout.html具有以下jinja2/nunjucks内容

  • layout.html

<!doctype html>
<head>
        <title>simple example</title>
</head>
<body>
        <h1>Simple example</h1>
        {% block body %}{% endblock %}
</body>
Run Code Online (Sandbox Code Playgroud)
  • index.html
{% extends "layout.html" %}

{% block body %}
hello world
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
  • 我用模板预编译了模板
./node_modules/nunjucks/bin/precompile templates >templates.js
Run Code Online (Sandbox Code Playgroud)

templates.js我有预编译的代码.

接下来我应该to do得到一个运行的Web服务器将使用预编译的template.js什么? …

node.js nunjucks

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

Plack&taint模式

是否建议使用perl的污点模式开发Plack应用程序(中间件)?

如果是,如何在受污染的模式下启动plackup和/或Starman?在简单的CGI脚本中,很容易用shebang线完成.

perl -T /path/to/{plackup|starman}做这个工作吗?或者这是推荐的方式吗?或者不推荐?

关于组合Plack + Taint模式的任何想法,指针,文章?

perl plack psgi

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

Perl运算符是"发现"而不是设计的?

只需阅读此页面:https://github.com/book/perlsecret/blob/master/lib/perlsecret.pod,并对以下声明感到非常惊讶:

Discovered by Philippe Bruhat, 2012.
Discovered by Abigail, 2010. (Alternate nickname: "grappling hook")
Discovered by Rafaël Garcia-Suarez, 2009.
Discovered by Philippe Bruhat, 2007.
Run Code Online (Sandbox Code Playgroud)

等等...

上面的运算符是DISCOVERED,所以perl-design不是故意的吗?

这意味着比perl sill更可能有一些随机的字符序列,正确的顺序做一些()x!!"运算符" 这样有用东西

在这里发现了什么其他语言的operatos?

perl

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

标签 统计

perl ×8

plack ×3

moose ×2

bash ×1

javascript ×1

mason ×1

node.js ×1

nunjucks ×1

psgi ×1

utf-8 ×1