Perl入門ゼミPerl入門ゼミテキスト処理、Linuxサーバー管理、Web開発ならPerlフォーラムへログインPerl›MojoliciousMojoliciousで自由に「URL」を生成するテクニックURLを作成するための基本url_forを使うと、URLを指定することができます。MojoliciousはCGIや組み込みWebサーバーなどの複数の環境で実行することができますがurl_forメソッドでURLを記述すると、どの環境でも実行できるURLを記述することができます。url_for('/user/register');またルート名を渡すと何ができるかというと、URLに含まれるパラメータを復元できます。Mojoliciousでクエリ文字列を含むURLを生成するMojoliciousでクエリ文字列を含むURLを生成するにはqueryメソッドを使用します。%>;リクエストURLを復元するリクエストURLを復元するにはurl_forメソッドの引数に何も指定しないか、currentを指定します。url_for('current');「:id」などの記述でキャプチャされたURLも正しく復元されます。/entry/:idただしクエリ文字列の部分は自動的に復元されないので、復元したい場合はurl_withを使う必要があります。'19']);このようにすると、検索条件に対して、さらに絞り込んだ検索を簡単に記述することができます。queryメソッドが値を設定する場合は、自身のMojo::URLオブジェクトを返却することを覚えておけば、次のように一行で記述することもできます。'19']);クエリ文字列の取り扱いクエリ文字列を解析したい場合はMojo::Parametersのparseメソッドを使用します。$params->parse('foo=b%3Bar&baz=23');一般的な利用方法としてはurl_forメソッドでMojo::URLオブジェクトを生成した後に、Mojo::URLのqueryメソッドでMojo::Parametersオブジェクトを取得してからparseメソッドを使うことが多いでしょう。次のようにするとURLにクエリ文字列を設定することができます。$url->query->parse('title=perl&name=ken');クエリ文字列を置き換えるクエリ文字列を置き換えるには次のようにリスト形式で渡します。1900);上記の例の場合は以下のように置き換わります。後name=taro&price=1900クエリ文字列のマージクエリ文字列をマージするには配列のリファレンスとして渡します。1900]);次のようにマージされます。値が同じものは置き換えられます。後title=perl&name=taro&price=1900クエリ文字列の追加クエリ文字列を追加するにはハッシュのリファレンスとして渡します。1900});次のように追加されます。url_withたとえば、検索条件は変更せずにページ番号だけを変更したいと思うときがよくあると思います。クエリ文字列の部分はそのまま使いたいのだけれど、一部の条件は変更したいという場合です。このような場合は>url_withヘルパーを使います。クエリ文字列を受け継ぐほかはurl_forと使い方は同じです。'/foo'次のように記述すると、ページ番号だけ変更できます。2])リバースプロキシを利用したときにホスト名、ポート番号、パスが正しく認識されるようにするApacheなどのWebサーバーをリバースプロキシにして、Mojoliciousアプリケーションにディスパッチするときに、そのままの設定では絶対URLを出力するredirecto_toで正しくURLが出力されません。以下のような設定を行ったとします。Unavailable」となって、Apacheからアプリケーションに接続ができません。設定を変えるかselinuxを無効にします。以下のような記述を追加しましょう。環境変数のMOJO_REVERSE_PROXYを1に設定する必要があります。5.0からは、X-Forwarded-Protoがあれば、自動的に認識されるようになっています。1;(これを設定しても、元のアプリには何の影響もでません。)フックを使ってリバースプロキシ経由のときのベースパスを書き換える正しくディスパッチするために、/gitwebliteの部分が、ベースパスだということを教えてあげないといけません。}}これでホスト名とポート番号が正しくurl_forやredirect_toで出力されるようになります。この記述を行っても試験環境でスタンドアロンでアプリケーションを実行するときでも、特に悪影響はありません。SSLのページでHTTPページへのリンクを作成したい場合httpsでアクセスした場合に、そのページの中にルート相対パス(/app1)でURLを指定した場合は、次のようなURLだと解釈されてしまいます。https://yourhost.com/app1SSLのページでHTTPのページへのリンクを張りたい場合は次のようにするとよいです。%>">Foo</a>url_forはMojo::URLオブジェクトを返却するので、絶対URLに変換してから、スキーマをhttpに変換します。url_for('/foo')->to_abs->scheme('http')このようにすることでSSLのページから簡単にhttpへのリンクを張ることができます。HTTPページでSSLのページへのリンクを作成したい場合HTTPページでSSLのページへのリンクを作成したい場合は次のようにするとよいです。%>">Foo</a>url_forはMojo::URLオブジェクトを返却するので、絶対URLに変換してから、スキーマをhttpsに変換します。url_for('/foo')->to_abs->scheme('https')このようにすることでSSLのページへのリンクを張ることができます。url_forメソッドでSSHのURLを生成するurl_forメソッドはHTTPのURLだけではなくて、URLの構造を持つものであれば、何でも作ることができます。次のようなSSHのURLを作ってみましょう。ssh://kimoto@somehost.com:20000/foo/bar.git次のようにします。->userinfo('kimoto')->host('somehost.com')->port(20000);まずto_absメソッドで絶対URLに変換してから、schemeメソッドでプロトコルを、userinfoメソッドでユーザー名を、hostメソッドでホスト名、portメソッドでポート番号を設定します。業務に役立つPerlログ解析など日本語を含むテキスト処理の実践!案内YouTubeでもっと簡単にプログラミングを学ぶならPerlゼミちゃんねるLinuxコマンドを学ぶならLinuxサーバー管理入門Webデザインを学ぶならWebデザイン入門Web開発を始めるななMojoliciousスタートアップブログを作るならGiblogプログラミングの勉強会ならPerl入学式お問合せはこちらPerlは、テキスト処理の記述性とパフォーマンスに優れ、正規表現が言語に組み込まれているプログラミング言語です。Linuxサーバー管理でのフィルタリングプログラム、複数行の文字列を処理、ファイル内容の検索・置換などが得意。Mojoliciousを使ったWebスタートアップも。Perlは、gitやopensslなどUnix/Linuxミドルウェアの支援ツールとして採用されています。このサイトはGiblogで製作されています。