标签: mason

如何让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
查看次数

梅森是一个框架吗?

我和朋友一直在讨论Mason(Perl)不是一个框架,而是一个模板化的语言.我觉得Perl的Mason做了JSP为Java做的事情(作为一个类比,而不是纯粹的技术比较).据我所知,JSP不是一个框架,我觉得梅森也不是.当我查找维基百科Mason(Perl)时,我发现主站点说它是一个用Perl编写的Web应用程序框架,而讨论页面则对它进行了竞争.

关于它为什么/它不是框架的任何指针?

根据ysth的评论进行更新:对于框架,我认为至少应该使数据库访问变得容易,管理会话,webapp需要的基本安全性,模板化和代码重用(或使基本任务变得容易的库).

perl frameworks web-applications mason

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

Perl:Javascript :: V8模板 - 来自perl

寻找像HTML :: Mason(或Mason)这样的模板引擎,所以将源组件"编译"成perl代码,而不是perl-code将"编译"组件到JavaScript代码中并在用Javascript :: V8运行/执行它们之后perl模块.

动机:寻找安全模板语言的解决方案,可以在不影响服务器安全性的情况下编辑用户.JavaScript是全功能语言,因此使用它可能比TT或类似的某些"迷你语言"更好/更快.对我来说最好的是扩展(重写)Mason编译成Joose/JavaScript而不是Moose/Perl.;)

是的,想要使用Javascript :: V8从perl执行此操作,因为这种方式可以通过Javascript :: V8 $ context-> bind_function以非常安全的方式提供所有perl的功能.

问题:

  • 有人知道吗?(在CPAN中什么也没找到)......

编辑:在梅森你可以写例如

% #perl version
% my(@list) = qw(Jane John Doe);
<ul> 
% foreach my $item (@list) { 
  <li><% uc($item) %></li> 
% } 
</ul>
Run Code Online (Sandbox Code Playgroud)

很高兴有可能在JS中编写上述内容,例如:

% //javascript version
% var list = ["Jane", "John", "Doe"];
<ul> 
% for(var i in list) {
  <li><% perl_uc($list[i]) %></li>
  <!-- the "perl_uc" is the real perl uc() what is binded
       with Javascript::V8::bind_function(perl_uc => sub { …
Run Code Online (Sandbox Code Playgroud)

perl v8 mason joose embedded-v8

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

POET中的全局变量mason2

我是Mason2/POET的新手,我一直在使用本指南http://search.cpan.org/~jswartz/Poet/lib/Poet/Manual/Tutorial.pod来创建我的第一个网站.

现在我想创建一个新的全局变量(例如:$ User)但是我不知道或者我应该采取什么方向这样做,因为文档没有解释它.我发现的大多数文档都是关于Apache或mod_perl ...

我正在寻找的例子:

<%augment wrap>
 <html>
  html code goes here
 </html>
</%augment>
<%init>
my $User;
Mason::Interp::allow_globals => [qw($User)];
</%init>
Run Code Online (Sandbox Code Playgroud)

mason poet

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

为什么Perl的CGI :: cookie能够在IE中设置cookie,而不是Firefox?

我有一些Perl CGI代码,我试图在SourceForge帐户的项目Web空间中运行.在与IE交谈时,代码能够很好地设置浏览器cookie,但在与Firefox交谈时没有设置cookie .当我在"localhost"上使用Apache进行测试时,两个浏览器都能正常工作.它只在Firefox疯狂的远程SourceForge URL上.

搜索已经发现了几十个近乎重复的问题,但通常人们会遇到完全相反的问题!(Firefox很好,IE有问题)

这是我要求设置cookie的实用程序子:

sub setCookie {
    my $name = shift;
    my $value = shift;
    my $expires = shift;
    my $path = shift;
    my $domain = shift;
    if( !defined( $expires ) ) {
        $expires = '+4h';
    }
    if( !defined( $path ) ) {
        $path = '/';
    }
    if( !defined( $domain ) ) {
        $domain = 'steveperkins.sourceforge.net';
    }
    my $cookie = CGI::cookie(
        -name    => $name,
        -value   => $value,
        -domain   => $domain,
        -expies => $expires,
        -path …
Run Code Online (Sandbox Code Playgroud)

cookies perl cgi mason

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

有条件的梅森代码

如果我想创建一个html代码块,显示如果mason中的布尔值为true,那么有没有办法在不使用print打印html代码的每一行的情况下执行此操作?即有没有办法做这样的事情

<% if($boolean) { %>
<li>
<a href='http://somesite.com'>link</a>
</li>
<% } %>
Run Code Online (Sandbox Code Playgroud)

代替

<%perl>
if($boolean) {
print "<li>";
print "<a href='http://somesite.com'>link</a>";
print "</li>";
}
</%perl>
Run Code Online (Sandbox Code Playgroud)

html perl mason

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

从另一个中递归调用一个匿名sub是否安全?

我想使用匿名子而不是命名子的原因是因为我想在Mason子组件中定义这些子组件(http://www.masonbook.com/book/chapter-2.mhtml#TOC-ANCHOR-7),与命名的潜艇表现不佳.

例如,如果我以这种方式编写代码:

my ($first, $second);
$first = sub {
    my $val = shift;
    print "val: $val";
    $second->($val);
};
$second = sub {
    my $val = shift;
    if (0 < $val) {
        $val = $val - 1;
        $first->($val);
    }
};
$first->(10);
Run Code Online (Sandbox Code Playgroud)

这种方法中是否存在任何隐藏的陷阱(例如内存泄漏等)?

正如@Schwern所解释的那样,Perl不会释放这些子的内存,因为它们之间存在循环引用.

但更具体地说,内存分配是否会线性增长,因为$ val会增加,或者它不依赖于调用堆栈深度?因为我可以将这些子元素放在mason <%once>块中,在这种情况下,这些子函数只会被初始化一次.

perl mason

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

在缩进时让Vim忽略第一个字符

每当我必须编辑Perl Mason文件时,由于Perl代码的开头,我总是会出现缩进行的问题%.例如:

<div>
    <div>
%       if( !$something ) {
            <strong><% $title %></strong>
%       }
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

任何想法我怎么能告诉Vim忽略%线的开头和缩进,就像它不存在?

我正在使用https://github.com/aming/vim-mason来支持混合的Perl/HTLM语法,但我认为它不会改变任何东西.

vim perl indentation mason

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

在哪里可以找到用于将Perl数据结构转换为JavaScript数据结构的Perl模块?

在哪里可以找到用于将Perl数据结构转换为JavaScript数据结构的Perl模块?

这是我的代码(梅森):

% # convert our @cti data structure into a javascript one
  var cti = [
% foreach my $cti_category (@cti) {
             {
                 label: "<% $cti_category->{'label'} %>",
                 value: "<% $cti_category->{'value'} %>",
                 children: [
%     foreach my $cti_type (@{$cti_category->{'children'}}) {
                            {
                              label: "<% $cti_type->{'label'} %>",
                              value: "<% $cti_type->{'value'} %>",
                            },
%     }
                           ]
             },
% }
            ];
Run Code Online (Sandbox Code Playgroud)

有这个模块吗?

javascript perl json mason data-structures

4
推荐指数
2
解决办法
1291
查看次数

获取HTML Form Post方法的返回值

我在Mason组件(Am)中有一个HTML表单,它使用post方法调用另一个Mason组件(Bm).我希望这个Mason组件(Bm)将值返回到Mason组件(Am)中的HTML表单.然后我想将此返回值传递给Javascript函数.

我怎样才能做到这一点?我是网络开发的新手.

html javascript perl mason

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