首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用mason模板执行perl脚本

使用mason模板执行perl脚本
EN

Stack Overflow用户
提问于 2016-08-10 05:43:32
回答 2查看 482关注 0票数 2

我安装了cpan的Mason模块。现在我正在使用mason模板执行我的第一个程序。

first_mason.mc

代码语言:javascript
复制
% my $name = "Mason";
    Hello world! Welcome to <% $name %>. 

first_mason.pl

代码语言:javascript
复制
#!/usr/local/bin/perl
use Mason;
my $mason = Mason->new(comp_root => '...');
print $mason->run('first_mason.mc')->output;

这将引发一个错误,如下所示

first_mason.mc不是C:/Perl/site/lib/Mason/Request.pm第256**行的绝对路径。

Note

我将两个文件放置在梅森安装的路径中(为了找到安装路径,我使用了perldoc -l Mason)并使用perl first_mason.pl执行了一个程序。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-11 09:37:34

@stevenl完全回答了你的问题。不要盲目地从梅森文档中复制概要,也需要阅读文档。)例如,在示例代码中:

代码语言:javascript
复制
#!/usr/local/bin/perl
use Mason;
my $mason = Mason->new(comp_root => '...');
print $mason->run('/foo')->output;

你需要替换

  • 以及带有到perl解释器的真正路径的shebang行#!/usr/local/bin/perl
  • 在文件系统中具有真实路径的'...',您的组件所在的位置。
代码语言:javascript
复制
comp_root => '/some/real/path/here/where/my/component/root/is'

然而,我写这个答案的主要原因是:如果您想在web应用程序开发中使用Mason,也可以查看诗人模块。它大大简化了整个过程,您将不需要关心许多-许多事情。例如,在安装Poet之后,您可以简单地:

代码语言:javascript
复制
poet new MyApp
myapp/bin/run.pl

如果没有任何配置,您将立即获得一个正常工作的web应用程序,您可以在http://localhost:5000的浏览器中访问它。您的component_root将以myapp/comps的形式位于myapp目录中。

票数 1
EN

Stack Overflow用户

发布于 2016-08-10 20:15:32

没有必要将您的文件放在安装Mason的目录中:

  • 当您用use导入它时,Perl应该知道在哪里可以找到Mason (假设您的perl安装是正确的)。
  • 梅森将通过.mc参数知道在哪里找到comp_root文件。
  • 组件名称需要指定为相对于comp_root的路径,始终以/开头。
  • 您需要从组件名称中删除.mc

因此,如果将2个文件放置在主目录中,那么脚本应该如下所示:

代码语言:javascript
复制
#!/usr/local/bin/perl
use Mason;
my $mason = Mason->new(comp_root => $HOME_DIR); # where $HOME_DIR is `C:\User\your_name`
print $mason->run('/first_mason')->output;

来自文档

组件根和组件路径 使用Mason时,可以指定所有组件文件所在的组件根。此后,任何组件都将通过其相对于根的虚拟路径来引用,而不是其完整的文件名。 例如,如果组件根目录是'/opt/web/comps',那么组件路径'/foo/bar.mc‘指的是文件'/opt/web/comps/foo/bar.mc’。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38865097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档