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

サンプルコードによる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プログラマのためのC言語入門 - PerlプログラマのためのC言語の解説です
  8. XSによるC/C++バインディング入門 - PerlからC言語あるいはC++で書かれた関数を呼び出します
  9. Perlその他の情報

Perlリファレンス

Perl逆引き辞典

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

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

Perlその他

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

Perl以外の技術情報

2014-10-28

XSでは整数型にIV,符号なし整数型にUV,浮動小数点型にNVを使うのがよい | XSによるC/C++バインディング入門

 最近はXSをごりごりと書いている。XSの場合は、Perlで書くのと違って、OSごとのアーキテクチャーの違いを意識することが多くなる。油断すると、こっちのOSでは動くが、こっちのOSでは動かないということが起こる。

 コードを書いていたのだけれど、一部のFreeBSD,NetBSDなんかで、試験が通らずにセグメンテーションフォールトを起こしてしまう。なんでだろうと悩んでいたのだけれど、幸い借りているさくらスタンダードが、FreeBSDなので、実機で状況が確認できた。

 調べてみるとINT2PTRで正しいポインタに変換できていないのでした。どういうコードを書いていたかというと、整数型にI32型を使っていた。

I32 addr = INT2PTR(...);

 このように書くと、一部のFreeBSDでは、うまく動かない。だから、もっと汎用的に設計されている整数型であるIVを使う必要がある。

IV addr = INT2PTR(...);

 また同じように符号なし整数型も、U32型ではなく、UV型を使うのがよい。

 またdouble型を使っているとlong double(64bit浮動小数点)のアーキテクチャを持つ、Linuxで、桁落ちが発生して、試験が通らないという状況になった。

double new_nv = some_func(double nv);

 これでは、long doubleのアーキテクチャで試験が失敗するので、もっとも汎用的に設計された浮動小数点型であるNV型を使う。

NV new_nv = some_func(NV nv);

 このように、IV,UV,NVという型を使うと、ポータビリティの高いXSを書くことができる。


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

2014-10-17

gccの最適化オプションを指定する | XSによるC/C++バインディング入門

 XSでgccの最適化オプションを指定するにはMakefile.PLの中のWriteMakefileのオプションとして、OPTIMIZEオプションを指定します。

OPTIMIZE => '-O3'

 -O3を指定すると、一番強い最適化が行われるようです。

 以下はOPTIMIZEオプションを使ったサンプルです。

use strict;
use warnings;
use ExtUtils::MakeMaker;

WriteMakefile(
    NAME                => 'Rstats',
    AUTHOR              => 'Yuki Kimoto <kimoto.yuki@gmail.com>',
    VERSION_FROM        => 'lib/Rstats.pm',
    ABSTRACT_FROM       => 'lib/Rstats.pm',
    ($ExtUtils::MakeMaker::VERSION >= 6.3002
      ? ('LICENSE'=> 'perl')
      : ()),
    PL_FILES            => {},
    PREREQ_PM => {
        'Test::More' => 0,
        'Object::Simple' => '3.10',
        'Math::Round' => '0.06',
        'Text::UnicodeTable::Simple' => '0.09'
    },
    dist                => { COMPRESS => 'gzip -9f', SUFFIX => 'gz', },
    clean               => { FILES => 'Rstats-*' },
    CC =>'g++',
    OPTIMIZE => '-O3',
    LD => 'g++',
    LIBS              => [''],
    DEFINE            => '',
    INC               => '-I.',
    OBJECT            => '$(O_FILES)',
);


Perl XS入門

2014-10-14

Mojoliciousのparamメソッドに仕様の変更があるので、5.48以上にアップデートするときは注意しましょう

 セキュリティ上の理由のために、Mojoliciousのバージョン5.48で、paramメソッドの仕様の変更が行われています。詳しい理由はわかりませんが、引数つきのparamメソッドが、意図せずにリストコンテキストで評価された場合に、予想していない値が利用されてしまうからではないかと思います。

paramメソッドの変更点

 5.47までは、Mojolicious::Controllerクラスの引数つきのparamメソッドは、リストコンテキストで評価された場合には、複数の値を返していましたが、5.48以降は、常に、最後の値を返すようになります。

# 5.47まで
my @names = $c->param('names');

# 5.48から
my $last_name = $c->param('names');

 もし、すべての値を取得したい場合はevery_paramメソッドを使用します。複数の値を含んだ配列のリファレンスが返ってきます。

# 5.48から
my $names = $c->every_param('names');

 またこれに伴って、以下のような変更もあるので注意しましょう。

every_cookieメソッドとevery_uploadメソッドがMojo::Messageに追加されました。
every_paramメソッドがMojo::Message::Requestに追加されました。
every_paramメソッドがMojo::Parametersに追加されました。
every_cookieメソッドとevery_paramメソッドとevery_signed_cookieメソッドが Mojolicious::Controllerに追加されました。
every_paramメソッドがMojolicious::Validator::Validationに追加されました。


Mojoliciousリファレンス

2014-10-06

Imagerの日本語訳を開始しました

 Imagerの日本語訳をこちらで開始しました。

Imager日本語訳

 ImagerはPerlで書かれた、画像編集、画像作成モジュールです。画像データを読み込んで編集したり、線や図形を描画したりすることができます。Rstatsで図形を描画するために、Imagerを利用しようとしたところ、日本語情報があまりにも少ないので、翻訳することにしました。

 お手伝いして頂ける方がいればうれしいです。Githubのアカウントがあれば編集できます。