mojolicious - голые слова - mojocast 2

Следуя вместе с эпизодами 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 ответ

Решение

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>
Другие вопросы по тегам