我首先是一个perl编码器,但与许多人一样,也是用于客户端工作的PHP代码,尤其是Web应用程序.
我发现我用两种语言复制了很多我的项目,但是使用了不同的范例(例如用于处理cgi输入和会话数据)或函数.
我想要做的是开始以更像PHP的方式编写我的Perl代码,这样我a)保持一个范例b)可以更快地将脚本从一个移植到另一个
具体来说,我问人们是否可以建议你如何在perl中执行以下操作?
1)重现会话库的功能$_SESSION,$_GET例如通过结束会话库的param()方法CGI.pm?
2)类似于PHP的模板库我习惯于在PHP约定中混合我的代码和HTML.例如
<h1>HTML Code here</h1>
<?
print "Hello World\b";
?>
Run Code Online (Sandbox Code Playgroud)
任何人都可以建议哪个perl模板引擎(以及可能的配置)允许我进行类似的编码?
3)PHP函数库任何人都知道perl库可以重现很多php内置函数吗?
看看EmbPerl.
它是一个基于Perl的模板系统,它似乎提供了PHP基于我公认的非常小的PHP知识所做的任何事情.
为了涵盖您的具体要点:
$_GET:EmbPerl提供%fdat哈希,其中包含通过POST或GET传递的全套表单数据
%fdat不区分值是通过POST来源于GET的查询字符串还是表单字段.
如果你绝对必须只有GET的QUERY_STRING中的值,这里有一个函数的简单示例:http://urlgreyhot.com/personal/resources/embperl_getting_values_query_string - 虽然你为什么要将GET与POST数据分开是逃避我此刻
$_SESSION:我不是100%我在PHP中得到了它的功能但是如果我是对的,那就是%udat每用户数据和%mdat每个模块/页面数据用于处理会话内容.
在EmbPerl文档的" 会话处理 "区域中更详细地描述了使用两者,以及EmbPerl中的所有其他多个会话支持
这是一个快速的%udat模糊:
...只要你写任何东西%udat,Embperl就会创建一个会话ID并通过cookie将它发送到浏览器.您写入%udat的数据由Apache :: Session存储.下次同一个用户请求一个Embperl页面时,浏览器会发回带有会话ID的cookie,而Embperl会从Apache :: Session填充%udat哈希,其值与您为该用户存储的值相同.
您包含的模板代码在EmbPerl中如下所示:
<h1>HTML Code here</h1>
[-
print OUT "Hello World!";
-]
或者更为惯用/正确的解决方案,
<h1>HTML Code here</h1> [+ "Hello World!" +]
PS我不知道\bPHP中有什么" ",所以我没有克隆它.
Embperl支持所有标准模板内容([- -]用于执行,[+ +]包含任意Perl代码的结果,模板流控制命令([$ if $]/'[$ for $]等等)等等.它还与mod_perl完全兼容.
2)如果你真的希望你的脚本是PHP中的模板,那么就有一个Markup::Perl模块(它来自另一个实际上称为PerlHP的项目).还有其他模块,比如HTML :: Mason,Perl程序员认为它们是模板引擎.
3)在CPAN我发现PHP::Strings和PHP::DateTime,但我没有用他们,否则不能为他们提供担保.