我安装了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**行的绝对路径。
Note
我将两个文件放置在梅森安装的路径中(为了找到安装路径,我使用了perldoc -l Mason)并使用perl first_mason.pl执行了一个程序。
发布于 2016-08-11 09:37:34
@stevenl完全回答了你的问题。不要盲目地从梅森文档中复制概要,也需要阅读文档。)例如,在示例代码中:
#!/usr/local/bin/perl
use Mason;
my $mason = Mason->new(comp_root => '...');
print $mason->run('/foo')->output;你需要替换
#!/usr/local/bin/perl。'...',您的组件所在的位置。comp_root => '/some/real/path/here/where/my/component/root/is'然而,我写这个答案的主要原因是:如果您想在web应用程序开发中使用Mason,也可以查看诗人模块。它大大简化了整个过程,您将不需要关心许多-许多事情。例如,在安装Poet之后,您可以简单地:
poet new MyApp
myapp/bin/run.pl如果没有任何配置,您将立即获得一个正常工作的web应用程序,您可以在http://localhost:5000的浏览器中访问它。您的component_root将以myapp/comps的形式位于myapp目录中。
发布于 2016-08-10 20:15:32
没有必要将您的文件放在安装Mason的目录中:
use导入它时,Perl应该知道在哪里可以找到Mason (假设您的perl安装是正确的)。comp_root文件。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时,可以指定所有组件文件所在的组件根。此后,任何组件都将通过其相对于根的虚拟路径来引用,而不是其完整的文件名。 例如,如果组件根目录是'/opt/web/comps',那么组件路径'/foo/bar.mc‘指的是文件'/opt/web/comps/foo/bar.mc’。
https://stackoverflow.com/questions/38865097
复制相似问题