パッケージ(モジュール)の読みこみ時にデフォルトでimportされるサブルーチン(メソッド)を決めるのが@EXPORTと@EXPORT_OKになります。
perlで@INCにパスを追加するにはコマンドラインスイッチにオプションを渡すか、BEGIN文もしくはuse libにてパスを追加する方法があります。
@ISAはpackageが属する(継承する)クラスを指定するために使用されます。
タイムアウトの処理にはALRMシグナルを使用します。
PerlでZIPファイルを解凍するにはArchive::Zipモジュールを使用します。
SSL証明書をリクエストする際に必要となるCSRが有効かどうかを調べるためのサブルーチンを書いてみました。
Text::CSV_XSモジュールを使用するとCSVファイルの読み込みが簡単に行える。このモジュールを使うと、カンマ区切りのCSVで、ダブルクォーテーション内にカンマが使われている場合などもうまく処理してくれます。
Class::Accessorを使えばnew constructerやaccessorを自動的に作成してくれる。
CPANをはじめて起動した際に様々な設定をするかと思いますが、これらの設定はConfig.pmに保存されています。
設定ファイルを用意し、それをperlで読み込み使用するにはConfig::Simpleを利用するとよい。たとえばtest.cfgというブロック形式の設定ファイルを以下のように用意ししたとします。Config::Simpleは自動で設定ファイルの形式を判別し、利用しやすいようにしてくれます。
DBIx::Class::Schema::Loaderを使用すればスキーマを作成する手間が省ける。
Data::Dumperはデータ構造をわかりやすく、表示してくれるモジュールです。
Date::Calcモジュールは日付の計算などを行ってくれるモジュールです。
Digest::SHAモジュールを使用すればSHA1メッセージダイジェストの生成が可能。
Encode::Guessモジュールは文字コードの判別に使用されます。ただし判別結果が複数になることがあるので注意。
Encodeモジュールで文字コードの変換ができるが、MIMEエンコードをするには以下のようにすればよい。
スクリプトにコマンドラインからオプション名と値を渡したい場合にはGetopt::LongモジュールのGetOptions()を利用すると便利です。
HTML::LinkExtorを使えばhtmlドキュメントからリンクの一覧を簡単に取り出すことができます。
HTTP::Request::Commonを使えば簡単にリクエストデータを生成することが可能。
IPアドレスの割り当て国を調べるにはIP::Country::Fastモジュールを使用します。
LWP::UserAgentを利用すればWEBデータを取得できます。GETメソッドのみでしたらLWP::Simpleの方が簡単です。ちなみにhttpsでの取得も可能ですが、Crypt::SSLeayがインストールされている必要がある。
perlのモジュールの雛形を作るコマンドにh2xsというコマンドがありますが、最近ではModule::Starterを使うのが主流のようです。また、Module::Starter::PBPではPerl Best Practicesが推奨するテンプレートにてモジュールが作成されます。
Net::Pingを使えば、特定のサーバとの疎通があるかどうかの死活監視を行うことができます。Net::PingモジュールではICMP PingのほかTCP、UDPが使用できます。
Perlでコメントを入れるには#を使用します。#は行単位でのコメントとなりますので、複数行にまたがるコメントを入れたい場合はperlのPOD機能を使用します。
perlモジュールをインストールするにはCPANを使用すると便利である。ソースを取得してコンパイルしてからインストールしてもよい。
Template::Toolkitは強力なテンプレート処理システムでHTML::TemplateやText::Templateなどといった他のテンプレート処理モジュールより汎用性の高い処理をすることが可能です。
Text::Templateモジュールを使用すれば、perlスクリプトから外部テンプレートを読み込むことができます。
use warningsを使用していてUse of uninitialized value in string eqというエラーがでた場合、初期化されていない変数が比較に使われていることを意味します。
Weak references are not implemented in the version of perlというエラーが出た場合、Scalar::Utilを再インストールすれば直る。
Wide character in print atというエラーはUTF-8フラグが付いた文字列をprintしようとしているからである。
XML::RSS::Parserを使ったRSSのparser例。
簡単なXMLデータであればXML::Simpleを使用できる。XML::Simpleではデータ読み込みのためのXMLinと書き出しのためのXMLoutを提供してくれる。
XML::XpathはXML::Parserを基盤としたモジュールで、XMLより特定の要素情報を抜き出すのに使用される。
SOAP::Liteに含まれるXMLRPC::Liteの使い方。
ディレクトリの移動にはchdir関数を使用します。成功すると1を返し、失敗すると0を返します。移動先のディレクトリが省略されるとホームディレクトリに移動します。
defined関数は変数が未定義(undef)かどうかを調べるための関数です。変数が定義されている場合には1を返します。(空文字列でも変数自体が定義されていれば1を返します。)エラーの戻り値にundefを返すものがあるので、エラー処理に使用されることが多い。
ハッシュの特定の値とキーを削除するにはdelete関数を使用します。
ハッシュからキーと値を取り出すにはeachを使用します。
File::Basenameモジュールのfileparseは、ファイルパスからファイル名、パス、拡張子に分解する機能を提供してくれます。
IPアドレスからホスト名を取得するにはgethostbyaddr関数を使用します。
ホスト名からIPアドレスを取得するにはgethostbynameを使用します。
h2xsはperlモジュールの雛形を作成する際に使用されます。(本来はCのヘッダファイルである.hからperlでCの関数を呼び出すextensionを作成するためのものらしい)
通常if文は以下のように実行文を{}の中に書く形式を取るが、実行文が一つの場合は{}を省略して書くことも可能。
ハッシュからキーを取り出すにはkeysを使用します。
ディレクトリの作成にはmkdirを使用します。以下の例ではカレントディレクトリにtest_dirというディレクトリが存在するかを確認し、存在しなければディレクトリを作成します。
perlのバージョン5.6からはグローバル変数の宣言のため、use varsの代わりにourを使用することができるようになりました。
pdflibは動的にPDFファイルを作成してくれるためのライブラリです。
PerlからSSH接続を扱うにはNet::SSH::Perlを使用すればよい。実行がやたらと遅い場合にはMath::BigInt::GMPが入っていない可能性があります。
perlで日付の比較を行うにはDate::Calcモジュールを使用すると便利です。
Perlでシステムコマンドを使用するには `` 内にコマンドを記述すればよい。
perlには以下のような特殊リテラルがある。
__FILE__ 現在のファイル名
__LINE__ 現在の行番号
__PACKAGE_ 現在のパッケージ名
詳しくはperldocでperldata(Special Literals)を参照のこと。
CPANなどでモジュールを探して、使用したりすることはよくありますが、自作のモジュールを作成するにはどうすればよいでしょうか?ここではモジュールの作成方法を簡単に説明します。
pod2manが入っているにもかかわらず、pod2manが見つからないといったエラーがでてPerlモジュールがコンパイルできない場合、環境変数LC_ALLをセットするとよい。
ref関数はリファレンスが参照している変数のタイプを返します。
select関数は現在設定されているファイルハンドルを調べたり、設定するために使用されます。またsleepのようにプログラムを一時停止する際にも使用される。
perlのプログラム内で処理を一定時間停止するにはsleepを使用します。 [使...
stat関数はファイルの様々な情報を得るための関数です。この関数を使うことでファイルサイズや、ファイル所有者、最終更新時間などを調べることができます。
undef $query; で既に定義された変数の定義を無効にします。...
until文は条件が真になるまでブロック内の処理を繰り返します。
use baseはpackageの所属するクラスの宣言をするのに使用されます。これにより親クラスのメソッドを使えるようになります。
use varsはuse stritc宣言した中でグローバル変数を使用するために使われます。
ハッシュから値を取り出すにはvaluesを使用します。
perlでべき乗を求めるには ** を使用します。 [例] print 2 **...
Date::Calc の Calender()を使用すれば、簡単にカレンダーを表示できます。
サブルーチンから複数の配列を戻すにはリファレンス(参照)を使用します。
Perlでサブルーチンを取り込むにはrequire文を使用します。
ファイルをアップロードさせるにはinput typeにfileを指定します。ここで指定したname属性がそのままファイルハンドルになります。以下ファイルをアップロードさせる際の手順。
モジュールがインストールされていない場合、[Can't locate Net/A...
インストールされているPerlモジュールのバージョンを確認するには以下のようにすればよい。
Perlのリュファレンスを使用すれば、変数を階層的に管理することができます。例えば以下のように、ハッシュリファレンスの中にハッシュリファレンスを格納することができます。
現在の時間から一定期間後の日付を調べるには、time関数で得た時間から一定時間後の秒数を足してあげればよい。
myとlocalはどちらも変数を局所化するために使われます。
perlで小数点を切り上げるにはPOSIXモジュールを使用すると便利です。
int関数を使用すれば小数点以下を切り捨てて値を整数にしてくれます。
数値を三桁ごとにカンマで区切るには、while文で順番に置換していきます。
数字のソートはそのままだとうまくいかないため、以下のようにします。 my @so...
標準入力の読み込みには<STDIN>を使用します。
パスワードなどを入力させる場合、端末に内容を表示させないようにするにはsttyコマンドでechoを無向にすればよい。
数字以外の文字にマッチさせるには \D を使用します。
正規表現にて使われる+や*は量指定子と呼ばれマッチする回数に違いがある。またマッチ回数を指定するには{}に回数を指定すればよい。
以下のようにすることで無名ハッシュへのリファレンスを作成できます。
unless ($zip !~ /[^0-9-]/) { print '郵...