Your browser doesn't support the features required by impress.js, so you are presented with a simplified version of this presentation.
For the best experience please use the latest Chrome, Safari or Firefox browser.


use strict;use warnings;# &pow($x, $y) = $x ** $y を計算する関数sub pow {my ($left, $right) = @_;return $left ** $right;}1;
use Test::More;require_ok( 'sample.pl' ); # テストするスクリプト# &pow(2, 3) = 2 ** 3 = 8になるか確かめるテストis( &pow(2, 3), 8, '&pow(2, 3) is 8');# テストの終わりを示すお約束done_testing;
.tにして, tディレクトリに格納することが習慣となっています.
$ perl t/sample.tok 1 - require 'sample.pl';ok 2 - &pow(2, 3) is 81..2
$ perl t/sample.tok 1 - require 'sample.pl';not ok 2 - &pow(2, 3) is 8# Failed test '&pow(2, 3) is 8'# at t/sample.t line 5.# got: '9'# expected: '8'1..2# Looks like you failed 1 test of 2.
# 引数の$gotと$expectedをeqで比較して真かどうかテスト.is( $got, $expected, $test_name );# 引数の1つ目が真かどうかテスト.ok( $got eq $expected, $test_name);# 引数の$gotが正規表現のqr/expected/にマッチするかテスト.like( $got, qr/expected/, $test_name );# リファレンスである$gotと$expectedが同じ構造(内容)かテスト.is_deeply( $got, $expected, $test_name );
$test_nameはテストの説明です.
# 引数の$gotと$expectedをneで比較して真かどうかテスト.isnt( $got, $expected, $test_name );# 引数の$gotが正規表現のqr/expected/にマッチしないかテスト.unlike( $got, qr/expected/, $test_name );# 引数の$gotと$expectedを演算子$opで比較して真かどうかテスト.cmp_ok( $got, $op, $expected, $test_name );# 例: $gotと$expectedを'&&'演算子で比較cmp_ok( $got, '&&', $expected, $test_name );
$ git clone git://github.com/perl-entrance-org/perl-entrance-2012-08.gitでclone(ダウンロード)しましょう.$ sudo apt-get install git-coreでOKです.
#!/usr/bin/env perluse utf8;use strict;use warnings;binmode STDIN, ":encoding(UTF-8)";binmode STDOUT, ":utf8";binmode STDERR, ":utf8";
t/perl-entrance-08.tがテストスクリプト, perl-entrance-08.plが回答用スクリプトです.perl-entrance-08.tが全てOKになるはずです.t/sample.t, sample.plは, 先程Test::Moreの説明で使ったスクリプトです.$ cpanm MojoliciousでOKです.$ sudo cpan Mojoliciousでインストールできます.mojo versionを実行してPerlのバージョンやMojoliciousのバージョンが表示されればOKです.$ perl -Mojo -E 'a( { "text" => "Neko" } )->start;' daemonを実行した後, ブラウザで127.0.0.1:3000を開いて, Necoと表示されればOKです.
use Mojolicious::Lite;use utf8;get '/' => sub {my $self = shift;$self->render(text => 'Hello, world!');};app->start;
hello.plという名前で保存して, $ morbo hello.plで実行してみましょう.127.0.0.1:3000を開けば, Hello, world!と表示されるはずです.
use Mojolicious::Lite;use utf8;
Mojolicious::LiteはMojoliciousのLite版... って, そのまんまですね.Mojolicious::Liteは1つのスクリプトで複数のページを作成できます. 一方Mojoliciousは, 1ページ=1スクリプトで構成されます.Mojolicious::Liteで作成した複数のページを, Mojoliciousの為に分割することも可能です.
use Mojolicious::Lite;use utf8;
Mojolicious::LiteはMojoliciousをインストールすれば同時にインストールされますので, 別にインストールする必要はありません.use Mojolicious::Lite;をすれば, 自動的にuse warnings;とuse strict;が有効になります. わざわざ書く必要はありません.
get '/' => sub {my $self = shift;$self->render(text => 'Hello, world!');};
get '/' => sub { ... };は, getメソッドで'/'にアクセスした場合, subの中の...の処理を行う, という意味です.my $self = shift;は「お約束」と思っておいて下さい.
get '/' => sub {my $self = shift;$self->render(text => 'Hello, world!');};
$self->render(text => 'Hello, world!');で, 「textの形式で, 'hello, world!'と出力せよ!」という命令をしています.json => { x => 3 }なら, json形式で{"x":3}が出力されますし, text => 'Oops!', status => '410'とすれば, ステータスコードを指定することもできます.
app->start;
Mojolicious::Liteを使って, hello, mojolicious! my name is (あなたの名前)と出力するスクリプトを書いて, 実行してみましょう.
__DATA__@@ index.html.ep<html><head><title><%= $title %></title></head><body style='padding: 30px;'><%= $string %></body></html>
hello.plの末尾に(app->start;の後に), このようなテンプレートを用意します.template/index.html.epとして保存することで適用されます.
get '/' => sub {my $self = shift;$self->stash(string => 'Hello, world!', title => 'hello');$self->render();} => 'index';
/にアクセスした際の動作を記載する関数を, このように書き換えましょう.$self->stashで, 先程記述したテンプレートにデータを渡すことができます.=> 'index';と記載することで, 使用するテンプレートを指定できます.
__DATA__@@ index.html.ep<html><head><title><%= $title %></title></head><body style='padding: 30px;'><%= $string %></body></html>
<%= $title %>はhelloに, <%= $string %>は, Hello, world!に置き換わります.<%= $xxx %>は, テンプレートの中で使える変数だと思って下さい.
@@ profile.html.ep<html><head><title><%= $name %>のプロフィール</title></head><body style='padding: 30px;'>私の名前は<%= $name %>です.<br>趣味は<%= $hobby %>で, 好きなプログラミング言語は<%= $language %>です.</body></html>
name, hobby, languageを与え, あなたの自己紹介(プロフィール)ページを作ってみよう.app.plを編集していきます.app.plの中に用意してあります.nameが空になっているので, あなたの名前を入力してください.
get '/profile' => sub {...};
$app->start;よりも上に, 次のようなコードを書きましょう.Use a spacebar or arrow keys to navigate