Perlリファレンス

関数:A-C | D-F | G-I | J-O | P-R | S-T | U-Z
演算子:
定義済み変数:

※Perl5.004のman pageを参考にしています。 

dbmclose(ハッシュ)
dbmopenで開いたデータベースファイルを閉じます。
 
dbmopen(ハッシュ,ファイル名,パーミッション)
DBM/SDBM/NDBM/GDBM/Berkeley DB形式のデータベースファイルを開き(通常はBerkeley DB)、それをハッシュに結び付けます。この関数によって開いたハッシュは、当然、普通のハッシュと同じ操作ができます。
第2引数のファイル名は、データベースファイル名から.dir/.pag/.dbなどの拡張子を取り除いたもの、第3引数のパーミッションは、もしファイル名で指定したデータベースファイルが無かった時に、指定したパーミッションでファイルを作成します。指定方法はchmod()などと同じ8進数です。
 
◇ワンポイントアドバイス
・もとのファイルのパーミッションが読み出しのみになっていた場合は、dbmopenで結びついたハッシュもデータの読み出ししかできません。
・tie()関数や、AnyDBM_Fileモジュールのほうが高機能です。

 
defined( [変数/関数/サブルーチン] ) [デフォルト$_]
変数、もしくは指定した関数の返り値が未定義値(undef)かどうかを調べます。また、サブルーチン名を与えるとそのサブルーチンが存在するかを調べます。
 
$zero_value = 0;
$null_value = '';
sub test_sub { return undef; }
print defined($zero_value);  #これは真
print defined($null_value);  #空文字列なのに、これも真!
print defined($undef_value);  #これは未定義なので偽になる
print defined(&test_sub); #サブルーチンが存在するので真(&tesu_subはundefを返しているのに)
 
0や空文字列と未定義を区別する唯一の手段です。
 
delete( $ハッシュ{$要素} )
指定したハッシュ内からある要素とその中の値を取り除きます。ハッシュにのみ有効で、他のものに使うとエラーになります。
dbmopen()などで開いたデータベースファイルに対してこれを使うと、データベース内の特定の要素を削除することができます。
 
die( エラーメッセージ )
標準エラー出力(コンソール上か、CGIの場合はhttpdのエラーログ)にエラーメッセージを出して現在のプログラムを終了します。exit()のエラー版です。
eval()内では$@の中にエラーメッセージを入れてeval()を終了します。
エラーメッセージの内容が改行("\n")で終わっていない場合は"エラーメッセージ at error.pl line 123."というふうに、現在実行中のスクリプトファイル名と行をメッセージの最後に追加します。
 
do サブルーチン(引数)
サブルーチンを呼び出します。もっとも、こんな回りくどいやり方を使う事例はあまり無いでしょうが(^^;
 
do ファイル名
指定したファイルの中身をPerlスクリプトとして実行します。別ファイル内にまとめたサブルーチンを利用したい場合などによく使われます。
指定したファイルが同じディレクトリ内になかった場合はPerlの検索パス内を探し、それでもなかった場合にのみエラーになります。
use()やrequire()と違い、そのファイルの最後で真を返しているかをチェックしません。
 
■dump:コアダンプします。
 
each( ハッシュ ) [コンテキスト注意]
★スカラーコンテキスト
ハッシュのキーを1つずつ返します。
★リストコンテキスト
( ハッシュのキー , それに対応する値 ) = each(%HASH);
を1つずつ返します。
※each関数の使用中にハッシュに要素を削除したり追加したりしてはいけません。
 
◇ワンポイントアドバイス
当然ながらもっぱらwhileなどのくり返し構造内で使われます。ちなみに、キーだけを返すkeys()、値だけを返すvalues()なんていうのもあります。

 
eof( [ファイルハンドル] ) [デフォルトARGV]
指定したファイルハンドルの読み込み位置がファイルの終わりに達しているかどうかを返します。ただし、通常ファイルからデータを読み込んで返す関数はファイルの終わりに達するとundefを返す(=if文などで「偽」になる)のでeof()はあまり必要ありません。
 
eval( [Perlスクリプト] ) [デフォルト$_] / eval { ブロック; }
引数に与えた式の値もしくはブロック内のPerlスクリプトを実行します。動的にスクリプトを生成したい(例えば変数内にスクリプトが入っているなど)場合に使用すると良いでしょう。
返される値は最後に評価された文(最後の行)です。
エラーが発生した場合はundefが返され、$@内にエラーメッセージが入ります。
 
◇ワンポイントアドバイス
後者のブロック形式はただ単にエラーで異常終了するのを防ぐためだけに使われます。例えばUNIXかどうかわからないのにsymlink()を使わなければならない場合などに使用するとよいでしょう。

 
exec( [コマンド] )
指定したコマンド(UNIXでの)を実行して、現在のスクリプト自体を終了します。
 
◇ワンポイントアドバイス
要するにUNIXのexecです。もっと詳しく知りたい場合はexecvp(3)のマニュアルを見てみるとよいでしょう。ちなみにfork()もあります。
理解できない場合は「要するに自分がそのコマンドに"化ける"んだ」とでも考えるとわかりやすいです。その証拠にexecするとexecした先のコマンドにプロセスIDが引き継がれます。

 
exists( $ハッシュ{キー} )
指定したハッシュのキーが存在するかどうかを調べます。もし存在した場合は、たとえそのキーに結び付けられた値がundefでも真(1)を返します。
 
exit [終了コード]
今すぐ現在のPerlスクリプトを終了します。終了コードを省略すると0(正常終了)です。0以外の値を渡すとふつう異常終了を示しますが、UNIX上以外ではあまり意味を持ちません。
 
exp( [乗数] ) [デフォルト$_]
en(自然対数のn乗)を計算します。
 
■fcntl→CGIではあまり使われない
 
■fileno→CGIではあまり使われない
 
flock(ファイルハンドル,ロック操作) [UNIXのみ]
ファイルにロックをかけ、他のプロセスからは操作できないようにします。成功すると真、失敗は偽を返します。
第2引数の「ロック操作」に2を渡すと排他ロック、8を渡すとロック解除です。
この他に1を渡すと共有ロックになりますが、サポートしていないシステムがありますので使わない方が良いでしょう。
このロック操作に4を加えると(=排他ロックを2+4=6とする)、他のプロセスによってすでにロックがかけられている場合はロック解放を待たずにすぐに価を返します。
ファイルを閉じると自動的にロックは解除されます。
 
◇ワンポイントアドバイス
カウンタの数字を入れておくファイルや掲示板のログなど、同時アクセスされると困るファイルに使用しますが、UNIX系OSでないと動作しない、旧いLinuxなどではNFSマウントされたところのファイルにロックはかけられない、完全な同時アクセスには対応できない、などの制限がつきまとうので、通常は他の方法(ロック判定用にシンボリックリンクやダミーのファイルを作り、それが存在するか否かでロックを実現する)と共に使用したりします。

 
fork()
UNIX系OSの同名のシステムコールを呼び出し、現在のプロセス自身のコピーを作ります。
 
■format→CGIではあまり使われない
 
■formline→format/write内部で使われ通常は使用しない
 

Return : Perl Top