サンプルコードによる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入門 別館