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

サンプルコードによるPerl入門 〜 Perlで楽しくプログラミングを学ぼう 〜

3000-01-01

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

 サンプルコードを中心としたPerlの入門サイトです。 Perlを使ったWebサイトの作り方も解説しています。関数やモジュールなPerlの便利な機能の解説も行っています。(スマートフォン、タブレットの場合のPCサイト表示はこちらから行うことができます)

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サイトを作ろう 〜
Perlを学ぶ楽しい方法のひとつはWebサイトを作成してみることです。Webサイトを作成できれば、インターネット上で自分でサービスを公開することもできます。

 MojoliciousはPerlでWebサイトを作る場合の代表的なフレームワークです。Mojoliciousを使えば、簡単にWebサイトを作成することができます。Ruby on Railsを知っている方は、これのPerl番だと考えていただけると想像しやすいと思います。

Perl書籍

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

Perl応用

 基礎を学び終えたら、関数とモジュールについて知るのが、上達の近道です。よく使用する関数や、モジュールについて解説しています。またデータベース操作についても学ぶことができます。

  1. よく使用する関数一覧 - よく使用する関数の紹介
  2. Perlモジュール徹底解説 - モジュールについての詳しい解説
  3. Validator::Customリファレンス - HTMLフォームのバリデーション
  4. SQLiteで学ぶデータベース操作の基礎 - SQLiteとDBIを使ったデータベース操作
  5. DBIx::Customリファレンス - データベースに便利にアクセス
  6. PDLによる統計解析 - PDLモジュールを使った統計解析
  7. Perlその他の情報

Perlリファレンス

Perl逆引き辞典

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

コメントデバッグコマンドライン引数配列
ハッシュサブルーチンモジュール数値演算
ビット演算文字列文字コード正規表現
ファイルとディレクトリファイルとディレクトリ(UNIX系OS)ファイル入出力制御構造
変数情報取得日付と時刻開発環境構築
特殊変数プラグマワンライナーPerlとMySQLの連携
自動試験プロセス間通信ソケットオブジェクト指向

Perlその他

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

Perl以外の技術情報

2014-07-05

Validator::Custom 0.23のリリース - 新しいルールの記法、制約関数の簡単な呼び出し

 Validator::Custom 0.23をリリースしました。今回のリリースでは、新しいルールの記法を追加しました。また制約関数の簡単な呼び出し方法を追加しました。

新しいルールの記法

 従来は、ハッシュと配列でルールを記述していましたが、今回からは、オブジェクトを使って、ルールが記述できるようになりました。タイピングミスがしにくくなり、どこで間違っているかを確かめやすくなりました。

use Validator::Custom;
my $vc = Validator::Custom->new;
 
# データ
my $data = {id => 1, name => 'Ken Suzuki', age => 19};
 
# ルールの作成
my $rule = $vc->create_rule;
 
# idのチェック - 整数、エラーメッセージを設定
$rule->require('id')->check(
  'int'
)->message('id should be integer');
 
# nameのチェック - 空白でない、長さが1から5,メッセージをを設定
$rule->require('name')->check(
  ['not_blank' => 'name is emtpy'],
  [{length => [1, 5]} => 'name is too long']
);
 
# ageのチェック - 値は任意、デフォルトは「20」
$rule->optional('age')->check(
  'int'
)->default(20);
 
# バリデーション
my $result = $vc->validate($data, $rule);

制約関数の簡単な呼び出し

 既存の制約関数を使って新しい制約関数を簡単に記述できるようになりました。「$_」という変数から、制約関数を呼び出すことができます。たとえば、空白あるいは整数という制約関数を作る場合は以下のようにかけるようになりました。

# 空白あるいは整数
$vc->register_constraint(
  blank_or_int => sub {
    my $value = shift;
    
    return $_->blank($value) || $_->int($value);
  }
);


ニュース

2014-06-27

静岡県でMiShima.pmが開催されるみたい

 静岡県でMiShima.pmが開催されるみたい。

静岡県はのぞみが停車しません。

Perlモンガーの集まり(pm)は、

Yokohama.pmとNagoya.pmがあるけれど、

静岡県には無いなあ。

というわけでMishima.pmを立ち上げてみようかな。

(静岡はのぞみ停車しないし、pmもないから)

 参加登録は、こちらです。

Mishima.pm #1 プログラミング言語Perlの勉強会(ATND)


ニュース

2014-06-23

掲示板の作成 | Mojolicious入門

(書きかけ)

 ここまで急ぎ足で解説してきました。では、今回は実際にWebサイトを作成してみましょう。簡単な掲示板を作成してみます。Webサイトにおいて、ユーザーからのデータを登録、登録したデータを読み出して表示します。

 掲示板でも、コメントを登録して、登録されたコメントを読み出します。つまり、掲示板を作成できるようになれば、どんなサイトも作成可能ということですね。

データベースの作成

 まず最初にデータベースのテーブルを作成します。テーブルの名前は「message」です。タイトルと書き込み内容を保存するために「title」と「content」という列を作成します。

create table message (
  id primary key,
  title not null default '',
  content not null default ''
);

掲示板のソースコード

 では早速ソースコードを書いてみます。

use Mojolicious::Lite;
use DBIx::Connector;

# データベースファイル
my $db_file = app->home->rel_file('bbs.db');

# コネクションマネージャー
my $conn = DBIx::Connector->new(
  # データソース名
  "dbi:SQLite:dbname=$db_file",
  # ユーザー名
  undef,
  # パスワード
  undef,
  # DBIのオプション
  {
    RaiseError => 1,
    PrintError => 0,
    AutoCommit => 1,
    sqlite_unicode => 1
  }
);

get '/' => sub {
  my $self = shift;
  
  # データベースハンドルを取得
  my $dbh = $conn->dbh;
  
  # メッセージを取得
 my $sth = $dbi->prepare('select * from message');
  $sth->execute;
  my $messages = [];
  while (my $row = $sth->fetchrow_hashref) {
    push @$messages, $row;
  }
 
  # 描画
  $self->render('index', messages => $messages);

};

# Create entry
post '/' => sub {
  my $self = shift;
  
  # フォームのデータ
  my $title   = $self->param('title');
  my $message = $self->param('message');
  
  # タイトルが存在しなければエラー
  my $errors = [];
  unless (length $title) {
    push @$errors, 'タイトルを入力してください。';
  }
  # メッセージが存在しなければエラー
  unless (length $message) {
    push @$errors, 'メッセージを入力してください。;
  }
  
  # エラーが存在すれば登録をせずに戻る
  if (@$errors) {
    $self->render('index', errors => $errors);
    return;
  }
  
  # データベースハンドル
  my $dbh = $conn->dbh;
  
  # データの登録
  my $sth = $dbh->prepare('insert into message (title, content) values (?, ?)');  $dbh->execute($title, $message);
  
  # リダイレクト
  $self->redirect_to('index');
};

get '/update' => sub {
  ...
};

post '/update' => sub {
  ...
};

app->start;

__DATA__

@@ layouts/common.html.ep
% my $title = stash('title');
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" >
    <title><%= $title %></title>
  </head>
  <body>
    %= content
  </body>
</html>

@@ index.html.ep
<%
  my $messages = stash('messages');
  my $errors = stash('errors');
%>
% layout 'common';

  <h1>掲示板</h1>
  <form action="<%= url_for('/') method="post" %>">
    <div>
      タイトル
      <input type="text" name="title" >
    </div>
    <div>Message</div>
    <div>
      <textarea name="message" cols="50" rows="10" ></textarea>
    </div>
    <div>
      <input type="submit" value="Post" >
    </div>
  </form>
  <div>
    % for my $message (@$messages) {
      <div>
        <hr>
        <div>Title: <%= $message->{title} %></div>
        <div>Message</div>
        <div><%= $message->{content} %></div>
      <div>
    % }
  </div>

2014-06-12

Mojoliciousドキュメント日本語訳が「Mojolicious 5」に対応しました。

 5月の末に「Mojolicious 5」がリリースされました。それにともない、Mojoliciousドキュメント日本語訳も、Mojolicious 5に対応させています。

Mojoliciousドキュメント 日本語訳

 MojoliciousはPerl製のすばらしいWebフレームワークです。ぜひ仕事で活用し、また、お楽しみください。誤字や翻訳の間違いなどがありましたら、教えてください。


技術ニュース