ブログトップ 記事一覧 ログイン 無料ブログ開設

サンプルコードによるPerl入門

3000-01-01

サンプルコードによるPerl入門 - 目次

 サンプルコードによるPerl入門は、サンプルコードを中心としたPerlの入門サイトです。またPerl中級者、上級者向けの内容も豊富に扱っていますので、順番に学習していくと、実際の仕事に必要な知識も身につくようになっています。

 Perlを使ったWebサイトの作り方、関数やモジュールなPerlの便利な機能の解説も行っています。

Perl基礎

 Perlの基礎について解説します。Perlのインストール、基本的な構文、配列、ハッシュ、正規表現、ファイル入出力、オブジェクト指向などを学ぶことができます。

  1. コマンドプロンプト- コマンドプロンプトの使い方
  2. Perlとは - Perlの特徴について
  3. Perlインストール - Perlのインストール方法
  4. Perl基礎文法最速マスター - Perlの基礎をすばやく学習
  5. 現代的なPerlの記述方法 - Perlの現代的な書き方
  6. 実践で役立つPerl正規表現 - Perlの正規表現で頻繁に利用するテクニック
  7. 配列とハッシュを自由に扱う - ハッシュと配列の扱い
  8. サブルーチンの作成 - サブルーチンの作成方法
  9. Perlのスコープを理解する - スコープという概念を学習
  10. ファイル入出力の基礎 - ファイルの読み書き
  11. Perlオブジェクト指向入門 - オブジェクト指向の入門
  12. デバッガの手引き - デバッガの紹介
  13. Perl豆知識 - 知っておくと便利な豆知識
  14. Perl FAQ - Perlでよくある質問に答える

Mojolicious入門

 Perlを学ぶ楽しい方法のひとつはWebサイトを作成してみることです。MojoliciousはPerlでWebサイトを作る場合の代表的なフレームワークです。Mojoliciousを使えば、簡単にWebサイトを作成することができます。

Mojolicious入門 - PerlでWebサイトを作ろう

Mojoliciousリファレンス

 Mojolicious入門で紹介できなかったさまざまなテクニックを紹介します。

Mojoliciousリファレンス - Mojoliciousのリファレンス

Perl書籍

 Perl関連の書籍の紹介です。「サンプルコードによるPerl入門基礎編」「簡単プログラミング Perl/CGI」と「もっと自在にサーバを使い倒す 業務に役立つPerl」は僕が書いています。

Perl書籍 - Perl関連の書籍情報

よく使用する関数一覧

 よく使用する関数の一覧です。これを見れば、実用で利用するPerlの標準関数をひととおり覚えることができます。

よく使用する関数一覧 - よく使用する関数の紹介

Perlモジュール徹底解説

 モジュールはPerlに機能を追加する仕組みです。Perlの標準モジュールを中心にして、利用頻度の高いモジュールについて、詳しく解説しています。

Perlモジュール徹底解説 - モジュールについての詳しい解説

Perl逆引き辞典

 Perlの逆引き辞典です。やりたいことをさがせます。簡単なサンプルつきです。

Perl逆引き辞典 - Perlの逆引き辞典

コーディングルール

 サンプルコードによるPerl入門でPerlのソースコードを書くときに利用しているコーディングルールです。参考にしてください。

サンプルコードによるPerl入門のコーディングルール

データベース基礎

 簡易なデータベースシステムであるSQLiteとPerlのデータベースにアクセスするためのモジュールDBIを使って、データベースについて学びます。

SQLiteで学ぶデータベース操作の基礎

XSによるC/C++バインディング入門

 XSはC/C++の関数をPerlの関数にマッピングする仕組みです。C/C++で書かれた関数をPerlから呼び出す方法について解説します。

XSによるC/C++バインディング入門

Perl応用

 Perlの応用的な話題について解説しています。

  1. Validator::Customリファレンス - HTMLフォームのバリデーション
  2. DBIx::Customリファレンス - データベースに便利にアクセス
  3. PDLによる統計解析 - PDLモジュールを使った統計解析
  4. PerlプログラマのためのC言語入門 - PerlプログラマのためのC言語の解説です
  5. Perlその他の情報

Perlリファレンス

 Perlのリファレンスです。

Perlその他

 Perlのその他の情報です。

CentOS・Red Hat Linux実践テクニック

 CentOSで利用できるテクニックを紹介しています。

Perl以外の技術情報

 Perl以外の技術情報です。

2015-08-06

Image::PNG::Simpleをリリースしました

 Image::PNG::Simpleをリリースしました。ビットマップ画像をPNG画像に変換するためのモジュールです。libpngなどのC言語の外部ライブラリに依存せずに、ビットマップ画像を、PNG画像に変換することができます。Linux,Windows,FreeBSDなど多くのプラットフォームで動くように作成しています。(現在まだ開発の初期の段階でベータリリースです。)

Image::PNG::Simple(CPAN)

使い方

 基本的な使い方は、ビットマップファイルをPNGファイルに変換する使い方です。

  use Image::PNG::Simple;
  
  # Image::PNG::Simpleオブジェクトの作成
  my $ips = Image::PNG::Simple->new;
  
  # ビットマップファイルを読み込む
  $ips->read_bmp_file('dog.bmp');
  
  # PNGファイルへの書き込み
  $ips->write_png_file('dog.png');

 parse_bmp_fileメソッドで、ビットマップファイルを読み込み、write_png_fileメソッドでPNGファイルに書き出しています。

 また、ファイルだけではなくビットマップデータをPNGデータに変換することもできます。

  use Image::PNG::Simple;
  
  # Image::PNG::Simpleオブジェクトの作成
  my $ips = Image::PNG::Simple->new;
  
  # ビットマップデータを解析する
  $ips->parse_bmp_data($bmp_data);
  
  # PNGデータの取得
  my $png_data = $ips->get_png_data;

 これは、ビットマップファイルをPNGファイルに変換する方法のショートカットであって、一時ファイルを利用しており、パフォーマンス的に速いというわけではないということに注意してください。

 外部ライブラリに依存しないということが、Image::PNG::Simpleモジュールの特徴になっています。


ニュース

2015-07-25

make clean,make realcleanをするときに削除するファイルを追加する

 Makefile.PLは自動的にMakefileを作成しますが、このときに「make clean」と「make realclean」で実効されるコマンドが定義されます。

 ときには、特定のファイルを「make clean」「make realclean」するときに、削除したいと思うときがあると思います。

 そのような場合は、Makefile.PLの中のWriteMakefile関数で、以下のオプションを記述することで対応することができます。

clean => {FILES => "*.xyz foo"}
realclean => {FILES => '$(INST_ARCHAUTODIR)/*.xyz'}

 FILESにおいては、makeの文法規則でファイル名を記述する必要があるので、注意してください。


XSによるC/C++バインディング入門

2015-07-02

GitPrep 1.10をリリースしました - CGIにおける利用のインストールの改善

 Githubのクローン、ポータブルなGithubシステムをUnix/LinuxにインストールできるWebアプリケーショGitPrepの1.10をリリースしました。

 自分のサーバーインストールできるので、ユーザーの作成は無制限、プライベートリポジトリも無制限に作成することができます。GitPrepはオープンソースですので、無料で利用することができます。さくらレンタルサーバーなどの共有レンタルサーバーにインストールすることができます。

GitPrep (リポジトリとドキュメント)

 1.10では以下の機能を追加しました。

  • CGIにおける利用ががSuExec以外のサーバーでもできるようになりました。URLは「gitprep/gitprep.cgi」に変更されました。

 自分で管理するサーバーで、SuExecの設定を行わなくても、CGIスクリプトを利用することが可能となりました。手順も新たに追加しています。

 どうぞ、便利にご利用ください。

サンプル

 動いているサンプルはこちらです。さくらのレンタルサーバーのスタンダードで動かしています。こちらでアプリケーションを試すことができます。

GitPrepを試す

ダウンロード

https://github.com/yuki-kimoto/gitprep/archive/latest.zip

ドキュメント

GitPrep ドキュメント


技術ニュースへ

2015-06-06

Kent WebのASKA BBSをMojoliciousを使った実装に移植しました。

 Kent WebのASKA BBSをMojoliciousを使った実装に移植しました。

ASKA BBS(Mojoliciosu version)

 もともとのASKA BBSのページとサンプルはこちらです。

ASKA BBS

サンプル

 プログラムの利用規定です。Kent Webのものを引き継いでいます。

プログラム利用規定

 移植版のASKA BBSは以下のような特徴があります。

特徴

 特徴は以下のようになっています。

  • WebフレームワークMojoliciousを使った掲示板の実装
  • cpanmが内部的には利用され、ワンコマンドで、セットアップが完了
  • Perl 5.10.1以上であることだけが要件。
  • CGIと組み込みのWebサーバーで実行が可能。たとえば、さくらのレンタルサーバー・スタンダードで動かすことができます。

 内部実装の具体的な改善は以下のとおりです。

  • WebフレームワークとしてMojoliciousを利用。
    • HTTPリクエスの解析、パラーメータの受け取り、クッキーの取得処理
    • URLのルーティングの改善、テンプレートの記述を改善、ヘッダ、フッタを部品に
  • グローバルなファイルハンドルは利用せずに、レキシカル変数を使用
  • 必要モジュールのインストールのシステムとしてcpanmを使用
  • Emailの送信にMIME::Liteを使用して簡潔にした
  • ページ送りの処理にData::PageとData::Page::Navigationを利用して簡潔にした。
  • 文字コードのエンコードにはEncodeモジュールを使用。JCodeの使用をなくした。
  • データ保存のときのエンコード処理のロジックを共通化して改善
  • CGIに加えて組み込みWebサーバーで起動ができるので、非常に高速でスケーラビリティがある。
  • 開発サーバーが利用できるので、開発が非常に楽になった。

目的

 このプロジェクトの目的は、古きよきPerl/CGIを、現代的な記述で、記述しなおすことです。レンタルサーバーで、簡単に動かすことができる完成されたWebアプリケーションを、現代的な記述することです。

 ひとつのサンプルを示すことによって、それをお手本にして書き直すことで、現代的なPerlの記述を覚えることができます。古きよきPerlの記述と比較することで、どのような部分が、簡潔で改善されたのかを理解することができるでしょう。

改善点の詳細

 このプロジェクトにおけるいくつかの改善点を、もう少し説明しておきます。

スケーラビリティ

 まずCGIの最大の問題点として、スケーラビリティがないことがあげられます。CGIは、毎回プロセスを起動するので、ある程度のアクセス数が増えてきたところで、パフォーマンスがネックになってきます。

 Mojoliciousを使った、今回の実装においては、CGIで利用できますが、パフォーマンスネックがもし現れてきたならば、組み込みサーバーやPlack/PSGI対応サーバーを使って、スケールアップすることができます。

 これは、PHPの利点によくにています。まず最初は、PHP/CGIで設置するのですが、もしパフォーマンスネックがあらわれるならば、mod_phpを使って、動かせばスケールアップすることができます。

 CGIの欠点は、そう簡単には、スケープアップできないのですが、今回改良されたCGIにおいては、スケープアップを行うことができます。

CPANの利用

 CPANはPerlとはきっても切り離せない存在です。Perlのライブラリの宝庫であるCPANという存在を利用できることが、Perlの大きな利点のひとつです。

 CGIアプリケーションにおいても、CPANを簡単に利用できたら、どんなにうれしいことでしょう。

 現代的なPerlにおいては、cpanmというツールとcpanfileという設定ファイルを利用することで、CPANにあるモジュールを簡単に利用することができるのです。

 cpanfileの中には、モジュールの一覧を記述しています。そして、これらのモジュールをcpanmというツールを使って、プロジェクトのディレクトリ以下に簡単にインストールすることができます。

 このプロジェクトでは、たとえば、MIME::Liteを使って、メール送信の記述を簡略にしたり、Data::Pageというモジュールを使って、ページ送りの記述を簡潔に記述しています。

文字コードをUTF-8、利用するモジュールをEncodeに

 古きよきPerlの時代は、まだUTF-8が存在していませんでしたから、文字コードといえば、EUC-jpやShift_JISでありました。

 そして、文字コードの変換処理といえば、Jcodeでした。

 けれども、現代的なPerlの記述においては、文字コードはUTF-8を、文字コードの扱いには、Encodeモジュールを使うのが、もっともよいです。

 そうすることで、文字列を統一的に扱うことができますし、正規表現も完全に正しく動きます。

ルーティングとテンプレートをWebフレームワークで

 ルーティングとテンプレートはMojoliciousというWebフレームワークで行っています。

 古きよき時代のPerlにおいては、ルーティングとテンプレートは、コードに、べた書きということも少なくありません。非常に記述が、複雑なものになっていました。

 ルーティングとテンプレートをWebフレームワークのものを利用することで、記述が簡潔になっています。

 PHPの利点は、HTMLの中にPHPの記述をかけることですが、Mojoliciousのテンプレートを利用すれば、HTMLの中にPerlの記述を行うことができます。

 ぜひコードを読んで、古きよきPerlと、現代的なPerlの差について、学んでみてください。