- alarm(expr)
- alarm expr
- expr秒後にアラームシグナル(SIGALRM)を発行する。
SIGALRMは、$SIG{'ALRM'}="関数名"; で捕獲する。
再設定したりexprに0を指定すると、以前の設定はキャンセルされ、以前の設定の残り時間が返される。
プラットフォームによってはサポートされていない場合もある。
- atan2(y,x)
- y/xのアークタンジェントを−π〜πの間で返す。
- bind(SOCKET, name)
- binmode(FILEHANDLE)
- binmode FILEHANDLE
- FILEHANDLEの入出力をバイナリモードで行うようにする。
UNIXでは意味が無いが、Windowsではバイナリファイルを読み書きする際にはバイナリモードにしなくてはならない。
さもないと、改行コード変換(CR LF ←→ LF)が行われてしまい、バイナリデータが破損してしまう。
- caller(expr)
- caller
- サブルーチンの情報(パッケージ名、ファイル名、行番号)を得る。
($package, $filename, $line) = caller;
- chdir(dirname)
- chdir dirname
- このプロセスにおけるカレントディレクトリを変更する。
- chmod(mode, filelist)
- chmod mode, filelist
- filelistで指定したファイル(配列指定可能)のパーミッションを変更する。
変更が成功したファイルの個数を返す。
- chop(list)
- chop(string)
- chop string
- chop
- 文字列の最後の文字を削除して、その文字列を返す。
文字列を配列で与えた場合はすべての文字列の最後の文字を削除し、最後の文字列の結果を返す。
<FILEHANDLE>で読み込んだデータ末尾の "\n" を削るのに便利。
引数省略時はchop($_)と同じ。
- chown(uid, gid, filelist)
- chown uid, gid, filelist
- filelist(配列指定可能)で指定したファイルのオーナーユーザーとオーナーグループを変更する。
uid, gidにはそれぞれユーザーIDとグループIDを指定する。
変更に成功したファイルの個数を返す。
- chroot(dirname)
- chroot dirname
- このプロセスにおけるルートディレクトリを変更する。
- close(FILEHANDLE)
- close FILEHANDLE
- openでオープンしたファイルハンドルをクローズする。
スクリプトが終了する時にはファイルは自動的にクローズされるが、
openしたファイルは使い終わったらクローズするのがお作法。
- closedir(DIRHANDLE)
- closedir DIRHANDLE
- opendirでオープンしたディレクトリハンドルをクローズする。
- connect(SOCKET,name)
- cos(expr)
- cos expr
- cos
- exprのcos(ラジアン単位)を返す。
expr省略時はcos($_)と同じ。
- crypt(plaintext,salt)
- dbmclose(assoc_array)
- dbmclose assoc_array
- dbmopen(assoc_array,dbname,mode)
- defined(expr)
- defined expr
- 変数、配列、サブルーチンが定義されているかどうかを調べ、真または偽を返す。
値がヌル文字(または0、または空配列)なのか、それとも定義されていないのかを調べる事ができる。
いくつかの関数もundefineの値を返す事がある。
defined($xx) # 偽を返す
$xx = ""; defined($xx) # 真を返す
$xx = 0; defined($xx) # 真を返す
- delete $assoc_array{key}
- 指定した連想配列を削除、つまり、undefineの状態にする。
- die(list)
- die list
- perlスクリプトを終了する。
listをSTDERRに出力し、$!の値(もし$!が0なら($?>>8)の値)をperlスクリプトの戻り値とする。
evalの中で使用した場合はスクリプトを終了せず、listを$@に設定し、evalがundefineで終了する。
listの末尾に改行が無い場合は、スクリプト名や行番号などが末尾に付加される。
open(IN, $file) || die "Can't open file.\n";
open(IN, $file) || die "Can't open file. Stopped";
- do { ... }
- do subroutine (list)
- do expr
- ... や Ssubroutineを実行する。
次の例では最後の式の値がdoの戻り値となる。
$xx = do { $yy = 5; $zz = 8; } # 戻り値は最後の式の値
次の例ではサブルーチンdoを呼び出して戻り値を返す。
(ただし、&add(5, 3)を用いるのが一般的。)
sub add { return($_[0] + $_[1]); }
print do add(5, 3);
次の例では libfile.pl という外部ファイルをperlのライブラリとして呼び出す。
(ただし、require "libfile.pl"; を用いるのが一般的。)
do "libfile.pl";
doを用いて、if文、unless文、while文、until文の順序を変更することができる。
do { print "5です。\n"; } if ($xx == 5);
do { print "xx = $xx\n"; $xx++; } while ($xx < 5);
- dump label
- 直ちにコアダンプしてスクリプトを終了する。
undumpコマンドでコアファイルから実行ファイルを生成して再実行すると、labelの場所から実行される。
変数の内容はダンプ前の状態が保存されるので、初期化処理をスキップした高速起動コマンドを生成できるが、ファイルディスクリプタは保存されない。
- each(assoc_array)
- each assoc_array
- 連想配列のすべての要素について処理を行う。
while (($key, $value) = each(%xxx)) {
print "$key = $value\n";
}
- else
- ifと組み合わせて「さもなくば」の処理を行う。
if ($xx == 5) {
print "5です。\n";
} else {
print "5ではありません。\n";
}
- elsif
- ifと組み合わせて「あるいは」の処理を行う。
if ($xx == 5) {
print "5です。\n";
} elsif ($xx == 6) {
print "6です。\n";
} elsif ($xx == 7) {
print "7です。\n";
} else {
print "5でも6でも7でもありません。\n";
}
- eof(FILEHANDLE)
- eof()
- eof
- FILEHANDLEがオープンされていないか、オープンされているがファイルの終端に達している場合に1を返す。
eof()とした場合はコマンドラインで指定したすべてのファイルが終端に達した場合に、eofとした場合は最後に読み込んだファイルが終端に達した場合に1を返す。
- eval(expr)
- eval expr
- eval { ... }
- exprの値や...をperlのスクリプトとみなして実行する。
最後に実行した命令の結果が戻り値として返される。
perlがエラーメッセージを出して終了するような命令や、dieが実行された場合、undefineを返し、$@にエラーメッセージを格納する。
dbmopen, symlink, flockなど、実装されているかどうか分からない命令や、0除算の可能性のある割り算を行う際に、evalを用いてperlが異常終了するのを防ぐ事ができる。
(eval { ... }; のセミコロン( ; )に注意)
print eval("3 * (5 + 3)") . "\n";
$x = 10; $y = 0;
$ans = eval { $x / $y; };
if ($@) { warn "WARNING: $@"; }
open(OUT, "> xx");
eval { flock(OUT, 2); };
if ($@) { warn "WARNING: flock isn't supported.\n"; }
- exec(list)
- exec list
- listで指定された文字列を外部コマンドとして実行する。
出力がバッファリングされてしまうことがあるので、$| = 1; としておくことをお奨め。
- exit(expr)
- exit expr
- perlスクリプトを終了する。
終了コードとしてexprの値を返す。
省略時は0を返す。
- exp(expr)
- exp expr
- exp
- eのexpr乗を返す。
expr省略時はexp($_)と同じ。
- fcntl(FILEHANDLE,function,scalar)
- fileno(FILEHANDLE)
- fileno FILEHANDLE
- FILEHANDLEで示されるファイルのファイルディスクリプタを返す。
これはselectなどで用いられる。
- flock(FILEHANDLE,operation)
- 他のプロセスが書込み中のファイルを読み込むと、不完全なデータを読み込んでしまい、ファイルが破壊されることがある。
これを防ぐためにflock()を用いてファイルをロックする。
これを排他制御と呼ぶ。
operationには次の値のいずれかを指定する。(まれに、数値の異なるシステムもあるかも)
1 読み込み宣言ロック(ロックできるまでブロックする)
2 書き込み宣言ロック(ロックできるまでブロックする)
5 読み込み宣言ロック(ロックできなければ失敗)
6 書き込み宣言ロック(ロックできなければ失敗)
8 ロック解除(アンロック)
読み込み宣言ロックは、誰かが書き込み宣言ロックしているとできない。書き込み宣言ロックは、誰かが書き込み宣言ロックや読み込み宣言ロックしているとできない。ロックが成功すると、書き込み権や読み込み権を得たと判断できる。1や2を指定すると自分がロックできるようになるまで処理待ち(ブロック)するが、5や6を指定するすぐに結果(真または偽)を返す。
flock()をサポートしていないシステムもあり、無理に使用するとperlが異常終了する。
汎用性のあるプログラムを記述する場合はevalを使用するとよい。
下記の例は2つの誤りを犯している。
open(OUT, "> outfile.txt");
flock(OUT, 2);
print OUT "........";
flock(OUT, 8);
close(OUT);
ひとつ目はopen()を行った時点で、ロックを行う前に既にファイルサイズを0にしてしまう点。ふたつ目は、printによる書き込みがフラッシュされる前にflock(OUT, 8)でロックを解除してしまっている点である。上記のコードは次のように書かなくてはならない。close()を行った時やプログラムが終了する時には自動的にロックは解除されるので心配はない。
open(OUT ">> outfile.txt");
flock(OUT, 2);
truncate(OUT, 0);
print OUT "........";
close(OUT);
- for (expr1; expr2; expr3) { statements }
- まずexpr1を実行し、その後、expr3を行いながらexpr2が真の間statementsを実行する。
次の例はいずれも、10回ループを実行する例である。
for ($xx = 1; $xx <= 10; $xx++) {
print "xx = $xx\n";
}
for (1, 2, 3, 4, 5, 6, 7, 8, 9, 10) {
print "xx = $xx\n";
}
for (1..10) {
print "xx = $xx\n";
}
- foreach var (array) { statements }
- 配列の各要素に対して処理を行う。
@zz = (11, 22, 33, 44, 55);
foreach $xx ( @zz ) {
print "xx = $xx\n";
}
- fork
- 子プロセスを生成し、親と子に分岐する。
親プロセスには子プロセスのIDが、子プロセスには0が返る。
forkをサポートしていないシステムもあり、無理に使用するとperlが異常終了する。
汎用性のあるプログラムを記述する場合はevalを使用するとよい。
if ($pid = fork()) {
print "これは親プロセスです。\n";
} else {
print "これは子プロセスです。\n";
}
- getc(FILEHANDLE)
- getc FILEHANDLE
- getc
- FILEHANDLEから1文字読み込む。
FILEHANDLE省略時はSTDINから読み込む。
ファイルの終端に達するとヌル文字を返す。
while ($c = getc(IN)) { print $c; }
- getlogin
- getpeername(SOCKET)
- getpgrp(pid)
- getpgrp pid
- getppid
- getpriority(which,who)
- getpwnam(name)
- getgrnam(name)
- gethostbyname(name)
- 詳細説明は省略するが、次のようにしてホスト名をIPアドレスに変換することができる。
$addr = (gethostbyname($host))[4];
$addr = sprintf("%u.%u.%u.%u", unpack("C*", $addr));
- getnetbyname(name)
- getprotobyname(name)
- getpwuid(uid)
- getgrgid(gid)
- getservbyname(name,proto)
- gethostbyaddr(addr,addrtype)
- 詳細説明は省略するが、以下のようにしてIPアドレスからホスト名を求めることができる。
$addr = "127.0.0.1";
$host = gethostbyaddr(pack("C4", split(/\./, $addr)), 2);
- getnetbyaddr(addr,addrtype)
- getprotobynumber(number)
- getservbyport(port,proto)
- getpwent
- getgrent
- gethostent
- getnetent
- getprotoent
- getservent
- setpwent
- setgrent
- sethostent(stayopen)
- setnetent(stayopen)
- setprotoent(stayopen)
- setservent(stayopen)
- endpwent
- endgrent
- endhostent
- endnetent
- endprotoent
- endservent
- getsockname(SOCKET)
- getsockopt(SOCKET,level,optname)
- gmtime(expr)
- gmtime expr
- localtimeと同様だが、グリニッジ標準時の値を返す点が異なる。
- goto label
- labelの場所にジャンプする。
labelはラベル名にコロン(:)をつけて宣言し、コロン無しのラベル名を指定してジャンプする。
- grep(expr,list)
- 配列から、パターンにマッチした要素を取り出す。
次の例は、配列@linesの中から "#include" で始まるものの配列を抜き出す。
@result = grep(/^#include/, @lines);
- hex(expr)
- hex expr
- exprを16進数の文字列と解釈してその値を返す。
expr省略時はhex($_)と同様。
$ans = hex("FF");
- if (expr) { statements }
- exprが真であればstatementsを実行する。
if ($xx > 5) {
print "5より大きい\n";
}
- index(str,substr,position)
- index(str,substr)
- 文字列の中から特定の文字列を探す。
文字列strのposition番目(省略時は最初)から後方にsubstrを探していき、最初に現れる位置を返す。
index("ABCDEFG", "DEF"); # 3を返す
- int(expr)
- int expr
- int
- exprの整数部を返す。
expr省略時はint($_)と同じ。
- ioctl(FILEHANDLE,function,scalar)
- join(expr,list)
- join(expr,array)
- arrayで与えられる文字列をexprの値で区切りながら連結する。
$now = join(":", $hour, $min, $sec);
- keys(assoc_array)
- keys assoc_array
- 指定された連想配列のすべてのキーの一覧を配列で返す。
- kill(sig,list)
- kill sig,list
- listで示すプロセスにSIGKILLシグナルを送る。
詳細はUNIXのシステムコールマニュアルを参照。
- last label
- last
- 最も内側のループを抜ける。
labelが指定されていればラベル名のループを抜ける。
aaa: while (<IN>) {
if (/^end/) last aaa;
}
- length(expr)
- length expr
- length
- exprで与えられる文字列の長さを返す。
expr省略時はlength($_)と同じ。
- link(oldfile,newfile)
- ファイルをリンクする。
リンクされたファイルは実態が同じで、複数のパス名を持つファイルとなる。
oldfileに既存のファイル名、newfileに新規作成する新ファイル名を指定する。
成功時は1、失敗時は0を返す。
- listen(SOCKET,queuesize)
- local(list)
- サブルーチン、eval、doの中でローカルな変数を定義する。
下記の例は3が表示されるが、local文を削除すると5が表示される。
sub xxx { local($a); $a = 5 }
$a = 3; &xxx; print $a;
- localtime(expr)
- localtime expr
- time()やstat()で得られた時刻を地方時間帯の年月日時分秒などに分解する。
($sec, $min, $hour, $mday, $mon, $year,
$wday, $yday, $isdst) =
localtime($tt);
$sec, $min, ...はそれぞれ、秒数(0-59)、分(0-59)、時(0-23)、日(1-31)、月(0-11)、年(1900年からの年数(西暦の下2桁ではない))、曜日(日(0)-土(6))、年日数(1月1日を0とする)、$isdst(夏時間なら0以外の値)を表わす。
- log(expr)
- log expr
- log
- eを基とするexprのlogを返す。
expr省略時はlog($_)と同じ。
- lstat(FILEHANDLE)
- lstat FILEHANDLE
- lstat(expr)
- lstat scalar
- statと同様だが、シンボリックリンクファイルの際、リンク先のファイルではなく、シンボリックリンクファイル自体の情報を得る。
- m/pattern/gio
- /pattern/gio
- mkdir(filename,mode)
- ディレクトリを作成する。
modeにはディレクトリのパーミッション(通常0755)を指定する。
成功時は1を返す。
失敗時は0を返し、$!を設定する。
- msgctl(id,cmd,arc)
- msgget(key,flags)
- msgsnd(id,msg,flags)
- msgrcv(id,var,size,type,flags)
- next label
- next
- 最も内側、もしくはlabelで指定したループの次の繰り返しを実行する。
aaa: while (<IN>) {
if (/^#/) { next aaa; }
}
- oct(expr)
- oct expr
- oct
- exprが、0xで始まっていれば16進数として、それ以外なら8進数だと解釈してその値を返す。
次の例は、C言語の構文と同様に、0xで始まっていれば16進数、0で始まっていれば8進数、それ以外なら10進数と解釈する。
$ans = ($xx =~ /^0/) ? oct($xx) : $xx;
- open(FILEHANDLE,expr)
- open(FILEHANDLE)
- open FILEHANDLE
- ファイルやコマンドをオープンし、ファイルハンドルを得る。
成功すれば非0を、失敗すればundefineを返す。
exprを省略した場合は、FILEHANDLEと同じ名前の変数の値がexprとみなされる。
- ファイルを読み込みモードでオープンする。
open(IN, "xxx.txt");
while (<IN>) { print; }
close(IN);
ファイルを書込みモードでオープンする。
open(OUT, "> xxx.txt");
print OUT "らくがき";
close(OUT);
ファイルを読み書きモードでオープンする。
open(F, "+< xxx.txt");
$count = <F>;
$count++;
seek(F, 0, 0);
print F $count;
close(F);
ファイルを追加書込みモードでオープンする。
open(OUT, ">> xxx.txt");
print OUT "らくがき";
close(OUT);
外部コマンドを起動し、その結果を読み込む。
open(IN, "cat xxx.txt | nkf -j |");
while(<IN>) { print; }
close(IN);
外部コマンドを起動し、出力を渡す。
open(OUT, "| nkf -j | /usr/lib/sendmail $mailto");
print OUT "らくがき";
close(OUT);
書き込み時、バッファリングしないようにする。
open(OUT, "> xxx.txt");
$old = select(OUT); $| = 1; select($old);
- opendir(DIRHANDLE,expr)
- ディレクトリ内のファイル一覧を得るためにディレクトリをオープンし、ディレクトリハンドルを得る。
opendir(DIR, "tmp");
while ($file = readdir(DIR)) { print "$file\n"; }
closedir(DIR);
- ord(expr)
- ord expr
- ord
- exprの最初の文字のASCIIコードを数値で返す。
expr省略時は$_を見る。
例えばord("A")は65、ord("B")は66を返す。
- pack(template,list)
- バイナリデータを生成する。
templateでlistがどんな形式のデータなのかを指定する。
後ろに数値を付けるとその個数分、アスタリスク(*)をつけるとlistの最後まで、バイナリデータに変換する。
a ASCII string(ヌル文字が補完される)
A ASCII string(スペースが補完される)
b bit string(昇順ビットオーダ)
B bit string(降順ビットオーダ)
h hex string(low nybble first)
H hex string(high nybble first)
c 符号付き1バイト数値(-128 〜 127)
C 符号無し1バイト数値(0〜255)
s 符号付きshort数値(通常2バイト)
S 符号無しshort数値(通常2バイト)
i 符号付きint数値(通常4バイト)
I 符号無しint数値(通常4バイト)
l 符号付きlong数値(通常4バイト)
L 符号無しlong数値(通常4バイト)
n short数値(ネットワークバイトオーダ)
N long数値(ネットワークバイトオーダ)
x ヌル文字
X back up a byte
f 単精度浮動小数点
d 倍精度浮動小数点
p 文字列へのポインタ
u uuencodeされた文字列
@ 絶対位置までヌル文字を埋める
- 次のような使用例がある。
pack("C*", 0x41, 0x42, 0x43); # 0x41 0x42 0x43
pack("b*", "10101010"); # 0x55
pack("a5", "abc"); # 0x41 0x42 0x43 0x00 0x00
- package packagename
- これ以降(ファイルの終わりか次のpackageが現れるまで)のスクリプトをpackagenameで示すパッケージとして扱うことを宣言する。
パッケージの内部では独自の変数名やサブルーチン名を持てるので、パッケージの内部と外部でたまたま変数名などが重複することによる悲劇を防ぐことができる。
パッケージ内の変数やサブルーチン名は「パッケージ名'変数名」で指定する。
print &calc'add(3, 5);
package calc;
sub add { return($_[0] + $_[1]); }
- pipe(READHANDLE,WRITEHANDLE)
- pop(array)
- pop array
- 配列の最初の要素を取り出す。
取り出された要素は配列から削除される。
配列に要素が無い場合はundefineを返す。
- print(FILEHANDLE list)
- print(list)
- print FILEHANDLE list
- print list
- print
- ファイルに文字列や変数の値を書き出す。
FILEHANDLEを省略すると標準出力(STDOUT)に書き出す。
listを省略すると $_ を書き出す。
- printf(FILEHANDLE format, list)
- printf(format, list)
- printf FILEHANDLE format, list
- printf format list
- ファイルに文字列や変数の値をフォーマット付きで書き出す。
formatには書き出す文字列を指定するが、「パーセント(%)+なんとか」は続くlistのそれぞれの要素の値に変換される。
例えば、%s は文字列に、%d は整数値、%f は小数に変換される。
%10s や %10d はそれぞれ、10文字分の文字列、数値を表わす。
%-10s や %-10d は右揃えで表示する。
「バックスラッシュ( \ )+文字」は特殊文字として判断され、改行( \n )、タブ( \t )、復帰( \r )などと判断される。
printf("Name=%s, Age=%d\n", $name, $age);
- push(array,list)
- 配列の最後に要素(配列指定可能)を追加する。
arrayにlistが追加される。
- q/string/
- qq/string/
- qx/string/
- rand(expr)
- rand expr
- rand
- 0〜exprまでのランダムな小数を返す。
expr省略時はrand(1)と同じ。
(参照srand)
- read(FILEHANDLE,scalar,length,offset)
- read(FILEHANDLE,scalar,length)
- ファイルハンドルからlengthバイト分のデータを読み出してscalarに格納する。
offsetを指定すると読み出したデータをscalarのoffsetバイト目から格納する。
成功時は読み出したバイト数を、失敗時はundefineを返す。
バイナリデータを読み出す際に便利だが、MS-DOSなどではbinmodeを使用しなくてはならない場合がある。
テキストファイルを読み込むのであれば、readではなく、<FILEHANDLE>の形式を用いるのが一般的。
- readdir(DIRHANDLE)
- readdir DIRHANDLE
- ディレクトリ内のエントリ(ファイルやディレクトリなど)の一覧を得る。
スカラー変数に代入する時は次のエントリを、配列変数に代入する時は残りのエントリの一覧を返す。
これ以上エントリが無い場合はundefine(配列の場合はヌルリスト)を返す。
- readlink(filename)
- readlink filename
- シンボリックリンクの個数を得る。
サポートされていないプラットフォームでは致命的エラーとなる。
- recv(SOCKET,scalar,length,flags)
- redo LABEL
- redo
- 最も内側、もしくはLABELで指定したループをもう一度繰り返す。
- rename(OLDNAME,NEWNAME)
- ファイル名を変更する。成功すれば1を、失敗すれば0を返す。
- require(expr)
- require expr
- require
- ライブラリファイルを読み込む。
ライブラリファイルは習慣的に.plの拡張子を持つperlスクリプトである。
exprを省略した場合は$_をファイル名とみなす。
require "jcode.pl";
- reset(expr)
- reset expr
- reset
- return list
- サブルーチンを終了する。
listをサブルーチンの戻り値とする。
return文を省略すると、最も最後の式の値が戻り値となる。
sub add { return($_[0] + $_[1]); }
- reverse(list)
- reverse list
- 配列(または文字列)を逆順に並び替えたものを返す。
結果を配列として扱うか、スカラーとして扱うかで動作が異なる。
@ans = reverse("abc", "def"); # ( "def", "abc" )が返される
$ans = reverse("abc", "def"); # "cba"が返される。
- rewinddir(DIRHANDLE)
- rewinddir DIRHANDLE
- readdirで最初から読み込めるようにする。
- rindex(string,substr,position)
- rindex(string,substr)
- indexと同様。
文字列の後ろから探す点が異なる。
- rmdir(filename)
- rmdir filename
- rmdir
- ディレクトリを削除する。
成功時は1を返す。
失敗時は0を返し、$!を設定する。
filenameを省略すると$_を参照する。
- s/pattern/replacement/gieo
- scalar(expr)
- exprで指定した値をスカラー値に変換して返す。
- seek(FILEHANDLE,position,whence)
- ファイルの読み込み・書き込み位置を変更する。
whenceが0の時はファイルの先頭からpositionバイト目に、whenceが1の時は現在の位置からpositionバイト移動した場所(負の数も指定可能)に、whenceが2の時はファイルの終わりからpositionバイト目に移動する。
成功すれば1、さもなくば0を返す。
(whenceの数値はシステムによって異なる場合がある?)
- seekdir(DIRHANDLE,pos)
- readdirで読み込むディレクトリ位置を変更する。
posにはtelldirが返す値を指定する。
- select(FILEHANDLE)
- select
- select(rbits,wbits,ebits,timeout)
- semctl(id,semnum,cmd,arg)
- semget(key,nsems,size,flags)
- semop(key,string)
- send(SOCKET,msg,flags,to)
- send(SOCKET,msg,flags)
- setpgrp(pid,pgrp)
- setpriority(which,who,priority)
- setsockopt(SOCKET,lebel,optname,optval)
- shift(array)
- shift array
- shift
- 配列の最初の要素を取り出す。
取り出された要素は配列から削除される。
配列に要素が無い場合はundefineを返す。
- shmctl(id,cmd,arg)
- shmget(key,size,flags)
- shmread(id,var,pos,size)
- shmwrite(id,string,pos,size)
- shutdown(SOCKET,how)
- sin(expr)
- sin expr
- sin
- exprのsin(ラジアン単位)を返す。
expr省略時はsin($_)と同じ。
- sleep(expr)
- sleep expr
- sleep
- expr秒間処理を中断して待つ。exprを省略すると SIGALRM が発生するまで待ち、実際にまった秒数を返す。
- socket(SOCKET,domain,type,protocol)
- ネットワーク通信のためのソケットを作成する。
次のようにして、WWWサーバーから http://www.xxx.zzz/index.html を簡単に読み取ることができる。
$addr = (gethostbyname("www.xxx.zzz"))[4];
$name = pack("S n a4 x8", 2, 80, $addr);
socket(S, 2, 1, 0);
connect(S, $name);
select(S); $| = 1; select(stdout);
print S "GET /index.html HTTP/1.0\n\n";
while (<S>) { print; }
close(S);
- socketpair(SOCKET1,SOCKET2,domain,type,protocol)
- sort(list)
- sort list
- sort(subroutine list)
- sort subroutine list
- sort { ... } list
- 配列の各要素をソートした結果を返す。
引数で指定した配列は変更されない。
以下の3パターンの使用方法がある。
sub sortfunc { $a <==> $b }
@result = sort @list;
@result = sort sortfunc @list;
@result = sort { $a <==> $b } @list;
この場合のsortfunc(名前は任意)などをソート関数とよぶ。
ソート関数には比較要素が $a, $b という名前で渡される。
結果として正、0、負のいずれかで返すようにする。
- splice(array,offset,length,list)
- splice(array,offset,length)
- splice(array,offset)
- 配列要素を部分削除(置換)する。
arrayのうち、offset番目からlength個の要素をlistで置き換える。
list省略時は削除する。
length省略時はoffset番以降すべてが対象となる。
- split(/pattern/,expr,limit)
- split(/pattern/,expr)
- split(/pattern/)
- split
- 文字列を区切り文字で分割する。
/pattern/を区切り文字としてexprで与えられる文字列をLIMITを超えない範囲の個数に分割し、その配列を返す。
LIMITを省略した場合は個数の制限が無い。
exprを省略した場合は$_を分割する。
/pattern/を省略した場合はホワイトスペース(ひとつ以上の空白、タブ、または改行)で分割する。
@hhmmss = split(/:/, "12:34:56");
- sprintf(format,list)
- printfと同様のフォーマットを行うが、ファイルへの書き出しは行わず、結果を文字列として返す。次の例は数値を文字列に変換する。
$str = sprintf("%d", $number);
- sqrt(expr)
- sqrt expr
- sqrt
- exprのルートを返す。
expr省略時はsqrt($_)と同じ。
- srand(expr)
- srand expr
- randの種を与える。
randは乱数を返すとは言っているが、プログラム起動後は常に同じパターンの値を返す。
このパターンの始まりを変更するために、standで無意味な値を指定してやる。
expr省略時はsrand(time)と同じ。
- stat(FILEHANDLE)
- stat FILEHANDLE
- stat(expr)
- stat scalar
- ファイルのサイズや作成日付などを調べる。
($dev, $ino, $mode, $nlink, $uid, $gid, $rdev, $size,
$atime, $mtime, $ctime, $blksize, $blocks) = stat($file);
返却値はそれぞれ、$dev(デバイス番号)、$ino(iノード番号)、$mode(パーミッションモード)、$nlink(リンク数)、$uid(作成者のユーザID)、$gid(作成者のグループID)、$rdev(???)、$size(バイト数)、$atime(最終アクセス時刻)、$mtime(最終更新時刻)、$ctime(作成時刻)、$blksize(ブロックサイズ)、$blocks(ブロック数)を意味する。
最終更新時刻を知りたい場合は次のようにするとよい。
($mtime) = (stat($file))[9];
exprにアンダーバー( _ )を指定すると、最後に実行したstatの結果をそのまま返す。
これは速度改善に役立つ。
- study(scalar)
- study scalar
- study
- sub funcname { ... }
- サブルーチンを定義する。
sub add {
return($_[0] + $_[1]);
}
print &add(5, 6);
- substr(expr,offset,length)
- substr(expr,offset)
- 文字列の一部を取り出す。
exprで与えられる文字列のうちoffset文字からlength文字分を返す。
最初の文字は通常0文字目だが、$[により変化する。
offsetが負の値の時は$[に関わらず、文字列の最後から-offset文字目(最後の文字は1文字目)から後ろ方向にlength文字分を返す。
lengthを省略すると残りの全てを返す。
substr()は式の左辺にも使用できる。
- symlink(oldfile,newfile)
- oldfileを指し示すシンボリックファイルnewfileを作成する。
サポートされていないシステムでは致命的エラーとなるので eval を用いる。
- syscall(list)
- syscall list
- sysread(FILEHANDLE,scalar,length,offset)
- sysread(FILEHANDLE,scalar,length)
- ファイルからoffsetバイト移動した場所からlengthバイト分、scalarに読み込む。
read()と異なりバッファリングしないので、同時に用いると混乱が生ずる。
通常は実際に読み込んだバイト数を、失敗時はundefを返す。
- system(list)
- system list
- syswrite(FILEHANDLE,scalar,length,offset)
- syswrite(FILEHANDLE,scalar,length)
- ファイルのoffsetバイト移動した場所からlengthバイト分、scalarの内容を書き込む。
printなどと異なりバッファリングしないので、同時に用いると混乱が生ずる。
通常は書き込んだバイト数を、失敗時はundefを返す。
- tell(FILEHANDLE)
- tell FILEHANDLE
- tell
- ファイルの現在の読み込み・書き込み位置を得る。
- telldir(DIRHANDLE)
- telldir DIRHANDLE
- 現在のディレクトリ位置を返す。
この値はseekdirで用いられる。
- time()
- time
- 現在の時刻を得る。
グリニッジ標準時の1970年1月1日0時0分0秒からの秒数を返す。
localtime()やgmtime()で変換する。
- tr/searchlist/replacement/cds
- y/searchlist/replacement/cds
- truncate(FILEHANDLE,length)
- truncate(expr,length)
- 指定したファイルのサイズを変更する。
サポートしていないシステムでは致命的エラーとなる。
- umask(expr)
- umask expr
- umask
- undef(expr)
- undef expr
- undef
- 変数やサブルーチン名を指定して、これらを、定義されていない状態に戻す。
- unless
- if文と逆の意味で、「もし・・・でなければ」の処理を行う。
unless ($xx == 5) { print "5ではありません。\n"; }
- unlink(list)
- unlink list
- ファイルを削除する。削除に成功したファイルの個数を返す。
- unpack(template,expr)
- バイナリデータを解釈する。
templateはpackのものと同様。
unpack("C", "A") # AのASCIIコード0x41を返す
- unshift(array,list)
- 配列の最初に要素(配列指定可能)を追加する。
arrayにlistが追加される。
- until (expr) { statements }
- whileの逆で、exprが真になるまで、statementsを繰り返します。
- utime(atime, mtime, filelist)
- utime atime, mtime, filelist
- filelistで指定したファイルのアクセス時刻(atime)と更新時刻(mtime)を変更し、変更に成功したファイルの個数を返す。
atimeやmtimeはtimeで得られるような値を用いる。
- values(assoc_array)
- values assoc_array
- 指定された連想配列のすべての値の一覧を配列で返す。
- vec(expr,offset,bits)
- wait
- waitpid(pid,flags)
- wantarray
- warn(list)
- warn list
- dieと同様のメッセージをSTDERRに出力するが、プロセスは終了しない。
- while (expr) { statements }
- exprが真のあいだ、statementsを繰り返します。
$xx = 1;
while ($xx < 10) {
print "xx = $xx\n";
$xx++;
}
- write(FILEHANDLE)
- write(expr)
- write
- format文で指定したフォーマットに従って出力を行う。詳細説明省略。
sysread()に対応するのはsyswrite()だが、read()に対応するのはwrite()ではない。