mojolicious - barewords - mojocast 2

时间:2014-04-25 06:05:28

标签: perl mojolicious mojolicious-lite

跟随mojocasts第2集学习mojolicious。

我有

中的例子
#!/usr/bin/env perl
use Mojolicious::Lite;

get '/:fname/:lname' => sub {
    shift->render('hello');
};

app->start;

__DATA__

@@ hello.html.ep
<!doctype html><html>
    <head><title>Placeholders</title></head>
    <body><i>Hello <%= fname %> <%= $lname %></li></body>
</html>

然而,当我转到地址http://127.0.0.1:3000/sayth/renshaw时,我从服务器收到此错误。

[Fri Apr 25 15:59:05 2014] [error] Bareword "fname" not allowed while "strict subs" in use at template hello.html.ep from DATA section line 3, <DATA> line 17.
1: <!doctype html><html>
2:     <head><title>Placeholders</title></head>
3:     <body><i>Hello <%= fname %> <%= $lname %></li></body>
4: </html>

我不相信我已经指定了严格的潜艇,我该如何解决?

编辑:我正在运行curl安装的最新版本,安装了perl 5.16.3。

1 个答案:

答案 0 :(得分:3)

Mojolicious默认启用use strict;。要感恩:)

错误与perl代码中的错误相同:

Bareword "fname" not allowed while "strict subs" in use at template hello.html.ep

基本上,你只是在fname之前错过了一个美元符号:

@@ hello.html.ep
<!doctype html><html>
    <head><title>Placeholders</title></head>
    <body><i>Hello <%= $fname %> <%= $lname %></li></body>
</html>

或者你也可以使用这种格式:

@@ hello.html.ep
<!doctype html><html>
    <head><title>Placeholders</title></head>
    <body><i>Hello <%= param('fname') %> <%= param('lname') %></li></body>
</html>