下記フォームに必要事項を入力後、確認ボタンを押してください。
C:\users\user>perl -v This is perl 5, version 24, subversion 1 (v5.24.1) built for MSWin32-x64-multi-t hread (with 1 registered patch, see perl -V for more detail) Copyright 1987-2017, Larry Wall Binary build 2402 [401627] provided by ActiveState http://www.ActiveState.com Built Jan 5 2017 02:08:02 Perl may be copied only under the terms of either the Artistic License or the GNU General Public License, which may be found in the Perl 5 source kit. Complete documentation for Perl, including FAQ lists, should be found on this system using "man perl" or "perldoc perl". If you have access to the Internet, point your browser at http://www.perl.org/, the Perl Home Page. C:\users\user>チェンジディレクトリ【cd】で[data]フォルダに移動します。[data]フォルダに移動したのちは【catalyst.pl [APP_NAME]】コマンドを入力してプロジェクト作成を行ってください。[APP_NAME]はプロジェクト名で仮にHelloとして進めていきますので、catalyst.pl Hello とコマンドを入力して入力して実行してください。
<Catalystプロジェクト作成コマンド> catalyst.pl [APP_NAME]コマンドを入力して実行します。
c:\data>catalyst.pl Hello created "Hello" created "Hello\script" created "Hello\lib" created "Hello\root" created "Hello\root\static" created "Hello\root\static\images" created "Hello\t" created "Hello\lib\Hello" created "Hello\lib\Hello\Model" created "Hello\lib\Hello\View" created "Hello\lib\Hello\Controller" Locale 'Japanese_Japan.932' may not work well. Some characters in it are not re cognized by Perl. created "Hello\hello.conf" created "Hello\hello.psgi" created "Hello\lib\Hello.pm" created "Hello\lib\Hello\Controller\Root.pm" created "Hello\README" created "Hello\Changes" created "Hello\t\01app.t" created "Hello\t\02pod.t" created "Hello\t\03podcoverage.t" created "Hello\root\static\images\catalyst_logo.png" created "Hello\root\static\images\btn_120x50_built.png" created "Hello\root\static\images\btn_120x50_built_shadow.png" created "Hello\root\static\images\btn_120x50_powered.png" created "Hello\root\static\images\btn_120x50_powered_shadow.png" created "Hello\root\static\images\btn_88x31_built.png" created "Hello\root\static\images\btn_88x31_built_shadow.png" created "Hello\root\static\images\btn_88x31_powered.png" created "Hello\root\static\images\btn_88x31_powered_shadow.png" created "Hello\root\favicon.ico" created "Hello\Makefile.PL" created "Hello\script\hello_cgi.pl" created "Hello\script\hello_fastcgi.pl" created "Hello\script\hello_server.pl" created "Hello\script\hello_test.pl" created "Hello\script\hello_create.pl" Change to application directory and Run "perl Makefile.PL" to make sure your ins tall is complete c:\data>これでプロジェクトは作成されました。 (2) Catalystサーバ起動 catalystプロジェクトが作成されたかどうかの確認方法として、次のコマンドを実行して組み込みの開発Webサーバーを起動します。-restart"引数を使用すると、コードの変更時にリロードが可能になるので、コードを更新するときにサーバーを停止して起動する必要はありません
<開発Webサーバの起動> [APP_NAME]_server.pl [Option]開発サーバの起動します。開発サーバ起動後はhttp://localhost:3000をアドレスに入力してCatalystのデフォルトページが表示されれば開発サーバ起動がされています。開発サーバを停止する際は<ctrlキー+C>を押して停止します。
C:\data\Hello\script>Hello_server.pl [debug] Debug messages enabled [debug] Statistics enabled [debug] Loaded Config "C:\data2\Hello\hello.conf" Term::Size::Any is not installed, can't autodetect terminal column width Trouble trying to detect your terminal size, looking at $ENV{COLUMNS} Cannot determine desired terminal width, using default of 80 columns [debug] Loaded plugins: .----------------------------------------------------------------------------. | Catalyst::Plugin::ConfigLoader 0.34 | '----------------------------------------------------------------------------' [debug] Loaded PSGI Middleware: .----------------------------------------------------------------------------. | Catalyst::Middleware::Stash | | Plack::Middleware::HTTPExceptions | | Plack::Middleware::RemoveRedundantBody 0.04 | | Plack::Middleware::FixMissingBodyInRedirect 0.12 | | Plack::Middleware::ContentLength | | Plack::Middleware::MethodOverride 0.15 | | Plack::Middleware::Head | '----------------------------------------------------------------------------' [debug] Loaded Request Data Handlers: .----------------------------------------------------------------------------. | application/json | | application/x-www-form-urlencoded | '----------------------------------------------------------------------------' [debug] Loaded dispatcher "Catalyst::Dispatcher" [debug] Loaded engine "Catalyst::Engine" [debug] Found home "C:\data2\Hello" [debug] Loaded components: .-----------------------------------------------------------------+----------. | Class | Type | +-----------------------------------------------------------------+----------+ | Hello::Controller::Root | instance | | Hello::Controller::hello | instance | '-----------------------------------------------------------------+----------' [debug] Loaded Private actions: .----------------------+--------------------------------------+--------------. | Private | Class | Method | +----------------------+--------------------------------------+--------------+ | /default | Hello::Controller::Root | default | | /index | Hello::Controller::Root | index | | /end | Hello::Controller::Root | end | | /hello/index | Hello::Controller::hello | index | '----------------------+--------------------------------------+--------------' [debug] Loaded Path actions: .-------------------------------------+--------------------------------------. | Path | Private | +-------------------------------------+--------------------------------------+ | / | /index | | /... | /default | | /hello/ | /hello/index | '-------------------------------------+--------------------------------------' [info] Hello powered by Catalyst 5.90112 HTTP::Server::PSGI: Accepting connections at http://0:3000/(3) コントローラクラスの作成 次はcatalystの骨組みであるコントローラクラスを作成します。コントローラクラスはプロジェクトフォルダに作成されたscriptフォルダに移動、この場合はc:\data\Hello\scriptフォルダに移動後、[APP_NAME]_create.pl contoroller [controller_NAME]のコマンドを入力して作成します。
<コントローラクラスの作成> [APP_NAME]_create.pl controller [controller_NAME]今回、コントローラクラス[Hello]を作成します。
c:\data2>cd C:\data\Hello\script C:\data2\Hello\script>hello_create.pl controller hello exists "C:\data\Hello\lib\Hello\Controller" exists "C:\data\Hello\t" created "C:\data\Hello\lib\Hello\Controller\hello.pm" created "C:\data\Hello\t\controller_hello.t" C:\data\Hello\script>これでコントローラクラスが作成されました。 (4) コントローラクラスのみを使用した簡単なCatalystプログラムの作成 今回は、作成したコントローラクラスだけを使用してウェブブラウザに"こんにちは、世界""と表示するプログラムを作成します。作成したコントローラクラス[Hello.pm]をメモ帳や開発ツールで開いてください。C:\data\Hello\lib\Hello\Controller に作成されています。[Hello.pm]を開いたら次のサブルーチンを追加してください。 サブルーチンを実行する際のクライアントからのリクエストを処理するメソッドはアクションメソッドと呼ばれています。この場合はsubの後に続く[helloworld]をアクションメソッドと呼び[::Local]が属性となりLocal属性が付与されたhelloworldアクションとなります。 このサブルーチンの流れはアクションメソッドがコントローラクラス[$self]と[$c]はCatalystアプリケーションにアクセスするために使用されるCatalystコンテキストに渡されます。コンテキストの[$c]を矢印演算子によってresponseメソッドを呼び出し実行します。 $c->response->body によってHTTPレスポンスを返します。 その後ファイルを保存しますが、この場合の注意としては[ファイルはUTF-8]で保存しないと文字化けの原因になります。基本は保存ファイルは[UTF-8]で統一して下さい。
package Hello::Controller::hello; use Moose; use namespace::autoclean; BEGIN { extends 'Catalyst::Controller'; } =head1 NAME Hello::Controller::hello - Catalyst Controller =head1 DESCRIPTION Catalyst Controller. =head1 METHODS =cut =head2 index =cut sub index :Path :Args(0) { my ( $self, $c ) = @_; $c->response->body('Matched Hello::Controller::hello in hello.'); } #サブルーチンを追加############################################# sub helloworid :Local { my ( $self, $c ) = @_; $c->response->body('こんにちは 世界!!Hello World!!'); } ################################################################ =encoding utf8 =head1 AUTHOR A clever guy =head1 LICENSE This library is free software. You can redistribute it and/or modify it under the same terms as Perl itself. =cut __PACKAGE__->meta->make_immutable; 1;ウェブブラウザに http://localhost:3000/hello/helloworld を入力して こんにちは 世界!!Hello World!! と表示されたらOKです。 今回使用したのはModel-View-Controllerのうち、Controllerのみを使用しましたが、いかがでしょうか。上手く表示されなければ開発Webサーバを再起動して再度ブラウザにアドレスを入力してください。