我已经从cpan安装了Mason模块。现在我正在使用mason模板执行我的第一个程序。
first_mason.mc
% my $name = "Mason";
Hello world! Welcome to <% $name %>.
first_mason.pl
#!/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行**
注意
我将这两个文件放在安装了mason的路径中(查找安装路径,我使用perldoc -l Mason
)并使用perl first_mason.pl
执行程序
答案 0 :(得分:2)
无需将文件放在安装Mason的目录中:
use
导入时,Perl应该知道在哪里找到Mason(假设您的perl安装正确)。 comp_root
参数知道在哪里找到.mc文件。comp_root
的路径,始终以/
开头。.mc
。因此,如果将2个文件放在主目录中,则脚本应如下所示:
#!/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时,指定所有组件的组件根 文件住在。此后,任何组件将由其引用 相对于根的虚拟路径,而不是其完整文件名。
例如,如果组件根是&#39; / opt / web / comps&#39;,那么 组件路径&#39; /foo/bar.mc'指的是文件 &#39; /opt/web/comps/foo/bar.mc'
答案 1 :(得分:1)
@stevenl完全回答你的问题。不要盲目地从Mason文档中复制概要,也需要阅读文档。 :)例如在示例代码中:
#!/usr/local/bin/perl
use Mason;
my $mason = Mason->new(comp_root => '...');
print $mason->run('/foo')->output;
你需要更换
#!/usr/local/bin/perl
以及perl解释器的真实路径'...'
文件系统中的实际路径,例如comp_root => '/some/real/path/here/where/my/component/root/is'
但是,我写这个答案的主要原因是:如果您想将Mason用于 web-app 开发,请检查Poet模块。它极大地简化了整个过程,您不需要关心许多事情。例如。安装Poet
之后,您可以简单地:
poet new MyApp
myapp/bin/run.pl
您将立即获得(没有任何 配置)WORKING网络应用,您可以在浏览器http://localhost:5000访问它。您的component_root
将位于myapp
目录中myapp/comps
。