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

Perl入門
  • デバッグ
    • デバッグの基礎
    • Perlデバッガ 最初に覚えるコマンド
  • コマンドライン引数
    • コマンドライン引数の基礎
    • コマンドライン引数
  • 変数
    • レキシカル変数
    • レキシカル変数の宣言( my ),、代入、初期化。
    • レキシカル変数のスコープ。レキシカル変数の寿命
    • パッケージ変数
    • パッケージ変数
    • パッケージ変数の宣言(our)、スコープ。パッケージ変数の寿命。
    • mainパッケージ
    • パッケージ変数を一時的に退避して、復元する。local
    • 変数の型
    • 3つの変数型
    • スカラー型
    • 配列型
    • ハッシュ型
  • 配列
    • 配列の基礎
    • 配列の基礎 初期化、出力、代入
    • 配列の個数、最後の添え字、最大、最小、並べ替え
    • 配列への追加、配列の要素の取得
    • 配列スライス ・・・ 配列の複数の値を取り出す
    • 配列の操作
    • 配列の要素の選別(grep)、配列の写像(map)
    • 配列の各要素を処理する --- for文, foreach文
    • 配列の要素の検索、配列の重複した要素を取り除く、重複を数える
    • 配列へのリファレンス
    • 配列へのリファレンス, 配列への変換, 要素の参照
    • 配列と配列のリファレンスの比較
    • 配列の配列
    • 「配列の配列」の基礎
    • 「配列の配列」の操作。要素の追加と要素の削除
    • ハッシュの配列
    • ハッシュの配列。宣言と初期化。要素の参照。すべての要素の出力。
    • ハッシュの配列。要素の追加と削除。
  • ハッシュ
    • ハッシュの基礎
    • ハッシュの基礎。初期化、出力、代入。
    • ハッシュスライス ・・・ ハッシュの複数の値を取り出す
    • ハッシュの各要素の処理
    • ハッシュのすべてのキーと値を取得する。keys関数とvalues関数。
    • ハッシュの各要素を処理する。keys関数とvalues関数を使用する。
    • ハッシュのすべての要素をeach関数を使って処理する。
    • ハッシュの操作
    • ハッシュの要素の状態を調べる。キーの存在(exists),定義済み(defined),真と偽。
    • ハッシュのキーを削除する。delete関数。
    • ハッシュのキーと値を入れ替える。reverse関数を用いる。
    • ハッシュのキーと値の変更を制限する。 Hash::Util
    • ハッシュへのリファレンス
    • ハッシュへのリファレンス
    • ハッシュへのリファレンスからハッシュを取り出す
    • ハッシュのハッシュ
    • ハッシュのハッシュ
    • 配列のハッシュ
    • 配列のハッシュ。宣言と初期化。要素の参照。
    • 配列のハッシュの要素の追加と削除
  • 制御構造
    • 条件分岐の基礎
    • if文
    • 数値比較と辞書順比較
    • 論理積、論理和、否定
    • if ~ else、if ~ elsif
    • 真偽値
    • やや特殊な条件分岐
    • unless文
    • or
    • 後置のif、後置のunless
    • 3項演算子
    • 繰り返し
    • while文
    • for文
    • foreach文
    • lastとnext
  • 文字列
    • 文字列の基礎
    • 文字列を出力する
    • 文字列を連結する
    • 文字列リスト演算子 qw( )
    • ヒアドキュメント
    • 文字列の長さを取得する。length関数。
    • 文字列の検索・置換
    • 指定した位置の文字を抽出,置換する。substr関数
    • 文字を検索する。index関数。rindex関数。
    • 文字列の処理
    • 行末の改行を削除する。chomp関数
    • 区切り文字を指定して文字列を連結する。join関数
    • カンマ区切りの文字列を処理する。split関数
    • 文字列の順序を反転させる。reverse関数。
    • 文字列の変換
    • 小文字を大文字に変換する。大文字を小文字に変換する。uc関数とlc関数。
    • ダイジェストを作成してパスワードの照合を行う。crypt関数。
    • 数値をASCIIコード対応する文字に変換する。chr関数。
    • ASCIIコードの文字を内部表現である数値に変換する。ord関数。
    • 書式文字列
    • 書式指定した文字列を作成する。sprintf関数。
    • sprintf関数の書式指定子一覧
    • 固定長文字列にフォーマットする。
    • 2進数、8進数、16進数を進数表記でフォーマットする。
    • 小数点以下のけた数で精度を指定する。
    • 有効桁数で精度を指定する。
  • 正規表現
    • 正規表現とは
    • 正規表現の概要
    • 正規表現よるパターンマッチと置換
    • 正規表現の公式ドキュメント
    • 1文字を表す正規表現文字
    • 任意の文字列( . )、任意の数字( \d )、任意のワード文字( \w )
    • 文字クラスで文字の集合を表現する
    • 特殊な0文字を表す正規表現文字
    • 文字列の先頭と末尾を表現する。^ と $
    • ワード文字の区切りを表現する。 \b
    • 論理演算を表す正規表現文字
    • 論理和( A または B )を表現する (word1|word2)
    • 繰り返しを表す正規表現文字
    • 量指定子1 { m,n }
    • 量指定子2 *(0回以上) +(1回以上) ?(0回あるいは1回)
    • マッチした文字に関する情報の取得
    • マッチした文字を利用する。$1, $2, $3
    • パターンマッチした前後の文字を取得する。
    • 正規表現オプション
    • g マッチしたすべての文字を置換する。
    • i 大文字と小文字を区別しないでマッチさせる。
    • e 置換にサブルーチンを使用する。
    • s . を改行にマッチさせる。
    • m 複数行にマッチさせる
    • x 正規表現を見やすくする。
    • o で、変数展開を一度だけ行う。
    • 正規表現の小技
    • 正規表現を // 以外の文字で表現する。
    • () を、単なるグルーピングに使用する。(?:)
    • 正規表現を変数に保存する qr//
    • パターンマッチの規則
    • 最長マッチと最短マッチ
  • サブルーチン
    • サブルーチンの基礎
    • サブルーチンとは
    • 引数
    • 引数の3種類の受け取り方。 $_[0], shift, @_
    • 配列、ハッシュを引数として渡す
    • 配列とハッシュを区別して渡す。
    • 戻り値
    • スカラーコンテキストとリストコンテキスト
    • サブルーチンの戻り値 スカラーとリスト
    • スカラーかリストをコンテキストに応じて返却する。wantarray
    • 単独のreturn
    • サブルーチンの役割
    • Perlのサブルーチンの特徴
    • よいサブルーチンを作成するための心がけ
    • サブルーチン作成を作成して単体試験( 自動試験 ) を可能にする。
    • サブルーチンはプログラムの目次をつくるためのものでないので注意する。
    • サブルーチン演習
    • cvs形式の文字列を、配列の配列に変換する。
    • cvs形式の文字列を、ハッシュの配列に変換する。
    • 最大値と最小値を求める。
    • バブルソートする。
    • 降順と昇順を選択してバブルソートする。
    • サブルーチン作成の技術
    • リストとハッシュによる引数の受け取り方の典型的なパターン
    • 複数の配列あるいはハッシュを引数として受け取るパターン
    • エラー処理を行う。
    • デフォルト値の扱い。
    • 引数の受け取りで、意図しないハッシュのキーをチェックする。
    • サブルーチンへのリファレンス
    • サブルーチンへのリファレンスを作成する。
    • サブルーチンへのリファレンスを利用したポリモーフィズム
    • シグナルハンドラの実装
    • イベント駆動型プログラミングの初歩的な実装
    • サブルーチンの動的な生成
    • 関数ジェネレータ
    • サブルーチンのオートロード AUTOLOAD
    • 型グロブを使ってサブルーチンの名前を動的に決定する。
    • 関数テンプレートを使って動的に複数のサブルーチンを作成する。
    • クロージャ
    • クロージャの定義
    • クロージャを関数ジェネレータを使って作成する。
    • クロージャに参照される変数を初期化する。
    • クロージャの概念をクラスとの対比でわかりやすく説明する。
    • サブルーチンの特殊技
    • サブルーチンを実行時に再定義する。
    • 呼び出し元のサブルーチンの引数を取得する。
  • モジュールの作成
    • パッケージとシンボルテーブル
    • サブルーチンの定義とスコープ
    • シンボルテーブル
    • 型グロブとシンボルテーブル
    • モジュールとディレクトリ
    • 実行プログラムのディレクトリのひとつ上のディレクトリのモジュールを使う
  • オブジェクト指向
    • オブジェクト指向の特殊技
    • useを使って継承を行う。
  • 数値演算
    • 数値の基礎
    • 数値の表現
    • 2進数、8進数、16進数での数値表現
    • 数値に関するドキュメント
    • 数値演算
    • 4則演算
    • べき乗を求める。 **
    • インクリメント演算子とデクリメント演算子
    • 数値と文字列
    • 数値と文字列の自動変換
    • 文字列が正しい数値を表現しているかを判定する。
    • 数値と誤差
    • 数値と誤差
    • 浮動小数点を比較する。
    • 四捨五入を行う。
    • 整数部を取り出す。int関数
    • 小数部の切り上げと切り下げ。ceil関数とfloor関数
    • 数学関数
    • 絶対値を求める。abs関数。
    • 正の平方根を求める。sqrt関数
    • 三角関数
    • 円周率を取得する。Math::Trig::pi()
    • 角度をラジアンに変換する。Math::Trig::deg2rad
    • sin,cos,tanを求める。
    • その他の三角関数
    • 指数関数・対数関数
    • 自然対数の底 ネイピア数eを取得する。
    • 対数を求める
    • 進数変換
    • 10進数から2進数、8進数、16進数への変換
    • 2進数、8進数、16進数から10進数への変換
    • 10進数からn進数へ変換するアルゴリズム
    • n進数から10進数へ変換を行うアルゴリズム
    • 乱数
    • 乱数を生成する。
    • 再現性のある乱数を生成する。
    • 自然乱数に近い擬似乱数を発生させる。Math::Random::MT
    • その他の数学モジュール
    • 有効桁数の大きな数値を計算する。Math::BigInt、Math::BigFloat。
  • ビット演算
    • ビット演算
    • ビットとは
    • ビット演算とビット演算子
    • ビットシフト演算子
  • ファイルとディレクトリ
    • ファイルの存在確認
    • -f 通常ファイルの存在を確認する。
    • -d ディレクトリの存在を確認する。
    • -e ファイルの存在を確認する。
    • ファイルの情報
    • -s ファイルサイズを取得する。
    • -M 最終更新から経過した日数を取得する
    • -A で、最終アクセスから経過した日数を取得する
    • ファイルの詳細な情報を取得する。 stat 関数
    • ファイルテスト( あるいは stat )の結果を再利用する。 _
    • ファイル名の基礎知識
    • 絶対パスと相対パス
    • 自分自身のディレクトリと、1階層上のディレクトリを表現する。 . と ..
    • ファイル名の扱い
    • OSに依存しないファイル名を作成する File::Spec->catfile
    • ファイル名から、ディレクトリ名とベース名を取り出す。 File::Basename::fileparse
    • ファイル名から、拡張子を取り出す。File::Basename::fileparse($file,$suffix)
    • ファイル操作
    • ファイルを作成する。
    • ファイルを削除する。unlink
    • ファイルをコピーする。 File::Copy::copy
    • ファイルを移動する( ファイル名を変更する ) File::Copy::move
    • ディレクトリ操作
    • ディレクトリを作成する。 mkdir
    • ディレクトリを削除する。 rmdir
    • ディレクトリ名を変更する。 → ファイル名の変更と同じ。File::Copy::move
    • カレントディレクトリを変更する。 chdir
    • カレントディレクトリ名を取得する。Cwd::getcwd
    • カレントディレクトリのファイル一覧を取得する。 glob
    • 再帰的なディレクトリ操作
    • 複数階層のディレクトリを作成する。 File::Path::mkpath
    • 階層を持つディレクトリを一度に削除する。File::Path::rmtree
    • 再帰的にすべてのファイルを処理する。File::Find::find
  • ファイルとディレクトリ(UNIX系OS)
    • ファイルパーミッションの基礎
    • ファイルパーミッションとは
    • ファイルパーミッションの表現方法
    • パーミッションを「所有者」「グループ」「任意のユーザ」に設定する。
    • ディレクトリのパーミッション
    • ファイルパーミッションの操作
    • ファイルパーミッションを変更する。chmod
    • ファイルパーミッションを調べる。
    • ビットマスクでパーミッションを制限する。
  • ファイル入出力
    • ファイル入出力の基礎
    • ファイル入出力とは
    • ファイル入出力のドキュメント
    • ファイルオープン
    • ファイルオープンの2種類の記述方法
    • オープンモードの指定
    • オープンモードを詳細に指定する。sysopen 関数
    • ファイルハンドルの概念
    • ファイルリード
    • ファイルを1行ずつ読み込む。realline 関数。
    • すべての行をスカラー変数に読み込む。すべての行を配列に読み込む。
    • ファイルから一文字ずつ読み込む。getc
    • 読み込み時のエラーを考慮したファイルリードの記述方法
    • ファイルへの書き込み
    • 標準出力をリダイレクトしてファイルに書き込む。
    • ファイル名を指定してファイルに書き込む
    • ファイル読み書き
    • 安全にファイルを読み書きする。
    • ファイル入出力演習
    • csvファイルを読み込んでPerlのデータ型に変換する。( 配列の配列に変換 )
    • csvファイルを読み込んでPerlのデータ型に変換する。( ハッシュの配列に変換 )
    • OSの入出力機構
    • 標準入力、標準出力、標準エラー出力
    • 標準入出力とリダイレクト
    • パイプ
    • Unix風フィルタプログラミング
    • Unix風のフィルタプログラミングを書く。
    • オプションを指定できるフィルタプログラムを書く。
    • ランダムアクセス
    • シーケンシャルアクセスとランダムアクセス
    • ランダムアクセスを使って読み書きする。
    • バッファリング
    • バッファリングとは
    • コマンドバッファリングへの切り替え
    • ファイルロック
    • ファイルロックとは
    • 順番を守ってファイルを読み書きする。flock 関数
    • ロック用のファイルを使ってファイルロックする。
  • 情報取得
    • スクリプトの情報
    • スクリプト名を取得する。 $0
    • 実行スクリプトのあるディレクトリ名を取得する Find::Bin
    • 実行している関数名を取得する。 caller 関数
    • パッケージ名を取得する。  __PACKAGE__
    • スクリプト上の行番号を取得する __LINE__
    • スクリプトのファイル名を取得する。 __FILE__
    • モジュールの情報
    • モジュールの検索パスを調べる。 @INC
    • 読み込まれているモジュールを調べる。 %INC
    • OSの情報
    • OS名を取得する。 $^O
    • 環境変数を取得する。 %ENV
    • プロセスの情報
    • プロセスとは
    • プロセスIDを取得する。 $$
    • プロセスの開始時刻を取得する。 $^T
  • 日付と時刻
    • 日付と時刻の扱い
    • エポックから現時点までの経過秒数を取得する。time関数
    • 現在の日付と時刻(ローカル時間)を取得する。localtime関数
    • 現在の日付と時刻(協定世界時)を取得する。gmtime関数
    • 日付と時刻(ローカル時間)をエポック秒に変換する。Time::Local::timelocal()
    • 日付と時刻(協定世界時)をエポック秒に変換する。Time::Local::timegm()
    • 特別な日付
    • 祝日一覧を取得する(Google Calendar Data API )
    • 閏年(うるう年)かどうかを判定する。
    • 存在する日付かどうかを判定する。
    • 月末日を取得する。
    • 時刻の計算
    • 時刻の差を求める(24時間を越えない場合)
    • 月名の英語表記一覧
    • 時刻の差を求める( 時刻に日付を含む )
    • DateTime 汎用的に日付を扱う
      • DateTimeのインストール
      • DateTimeモジュールをインストールする。
      • DateTimeの基礎
      • DateTimeオブジェクトの初期化, 日付・時刻情報の取得
      • 現在の日付と時刻を取得する。
      • エポック秒から日付情報を作成する。
      • タイムゾーン
      • タイムゾーンを表現するクラス DateTime::TimeZone
      • タイムゾーン名一覧
      • ロケール
      • ロケールの指定。月名と曜日名を日本語で出力する。
      • ロケール指定のためのクラス DateTime::Locale
      • ロケール一覧 DateTime::Locale::Catalog
      • 時刻情報の取得
      • 年月日、時刻情報をまとめて取得する
      • うるう年の判定。月末日の取得。
      • 日付の書式指定 strftime
      • 日付の計算
      • 日付の足し算
      • 日付の引き算
      • DateTime::Duration 期間を表すオブジェクト
      • DateTimeでの日付計算の注意点
  • 開発環境構築( Windows )
    • 基礎的な開発環境( Windows )
    • ActivePerlをインストールする。
    • ActivePerlのディレクトリ構成
    • コマンドプロンプト入門
    • 文字コードへの対応( Windows )
    • コマンドプロンプトでUTF-8の文字を表示する。
    • CPAN
    • Windowsでmakeできる環境を作成する。nmake
    • CoLinux
    • CoLinuxのインストール( Fedora7 )
  • Linux( Fedora )
    • Vim
    • Vimの基本コマンド
    • 各種サーバのインストール
    • SSHサーバ(OpenSSH)の導入
    • SSHクライアント( TeraTerm )のインストール
    • TeraTerm SSH接続での自動ログインマクロ
    • FTPサーバ(vsftpd)のインストール
    • sambaの導入
    • Windowsのファイルパスを、Linuxのファイルパスに変換するスクリプト
    • ユーザ管理
    • ログインユーザの作成・パスワードの設定
    • パッケージ管理とサービス管理
    • パッケージのダウンロードとインストール yumコマンド
    • パッケージ管理 rpmコマンド
    • サービスの自動起動の設定 chkconfigコマンド
    • サービスの起動・停止 serviceコマンド
    • サービス起動スクリプト
    • アクセス制御
    • TCP Wrapper
    • ジョブの自動実行
    • cronのインストール
    • crondでプログラムを自動実行する
    • DNS
    • nslookup,digのインストール
    • Perl
    • cpanコマンドとCPANモジュールのインストール
  • MySQL
    • MySQLのインストール
    • FedoraでのMySQLのインストール
    • データベースとテーブル
    • MySQL データベースの作成、テーブルの作成
    • ユーザ管理
    • MySQL ユーザの作成・パスワードの設定
    • PerlとMySQLの連携
    • DBIとDBD
    • データベースへ接続する。
    • SQLを発行してデータセットを取得する。
    • 現在時刻をMySQLの日付時刻型に変換する。
  • Webアプリケーション
    • テンプレート
    • HTML::Template UTF8で書かれたテンプレートファイルを読み込む
  • ドキュメント
    • ドキュメント
    • Perlのドキュメントの読み方
    • ファイル入出力のドキュメント
    • perlintro英文完全解説
    • perlintroを読むための英単語集
    • Perl入門 perlintro英文完全解説 序
    • Perl入門 perlintro英文完全解説(1)
    • Perl入門 perlintro英文完全解説(2)
    • Perl入門 perlintro英文完全解説(3)
    • Perl入門 perlintro英文完全解説(4)
    • Perl入門 perlintro英文完全解説(5)
    • Perl入門 perlintro英文完全解説(6)
    • Perl入門 perlintro英文完全解説(7)
    • Perl入門 perlintro英文完全解説(8)
    • Perl入門 perlintro英文完全解説(9)
    • Perl入門 perlintro英文完全解説(10)
    • Perl入門 perlintro英文完全解説(11)
    • Perl入門 perlintro英文完全解説(12)
    • PAUSE( CPANのモジュール登録のためのサイト )
    • ABOUT PAUSE 日本語訳 全文
  • 特殊変数
    • 特殊変数一覧
    • $0 プログラム名を取得する。
  • プラグマ
    • よく使うプラグマ
    • 冒頭で必ず宣言するプラグマ。 strict と warnings
  • Core Module
    • ダンプ
    • Data::Dumper の使い方。変数の内容を出力する
  • ワンライナー
    • 便利なワンライナー
    • Perlでgrepする。指定した文字列を含む行を抽出
    • Windowsのコマンドプロンプトでcatする。
  • イベント
    • 2008年
    • 「Yokohama.pm Technical Talk #2」発表内容まとめ
    • プログラミング勉強会 第2回 Smiley Hackathonに参加した。
    • Smiley Hackathon(仮)#3に行く
    • プログラミング勉強会 第3回 Smiley Hackathonに参加した。
    • Yokohama.pm #3 が開催されます。
    • Yokohama.pm #3 の参加者の募集が始まりました。
    • sibuya.pm #10が中継されます。
    • Yokohama.pm #3 に関する記事
  • Perl関連記事
    • Perlのすすめ
    • 洗練されたPerl: CおよびJavaプログラマーのためのPerl 5.6
    • Perlプログラマー
    • Perlプログラマーの皆さん
    • その他
    • JPerl Advent Calendar 2008
  • 読み物
    • 学習
    • 技術文書を読むための5つの着眼点
    • Perlの公式ドキュメントを読むための英語の勉強方法
    • 独学で資格試験に合格するための効率的な勉強方法
    • プログラミング
    • Perlのサンプルコードを最速で実行する方法
    • グローバル変数の危険性を理解しておく。
    • 変数に適切な名前をつける
    • データの構造化、データの意味づけについて
    • その他
    • 調べものを便利にするために最低限必要なFirefox3アドオン3選
    • WindowsXPを高速化する。
    • Windowsでフォルダを便利に見る方法
  • 製作物
    • 自作CPANモジュール
    • Perlのオブジェクト指向を簡単にするモジュール Simo
    • 自作アプリケーション
    • Webミニ英和・和英辞典「翻訳の小窓」
    • YouTubeプレイヤー YouSuke
  • 雑記
    • Twitterをはじめました。
    • Simoのインターフェイスが固まってきた。
    • Simoの仕組み アクセッサの定義
    • Plaggerの概略図。
    • App::Sequenceというモジュールを考えている。(2)
    • サンプルコードによるPerl入門 別館
created by perlcodesample