Smart -Web Magazine

WEB開発者に嬉しいステキ講座

MENU

Headline

Cerebral Ballzy(セレブラル・ボールジー)

2011年9月21日 コメントの追加

おおー!かっこいい!
ハードコアなんだけど、全然聴ける。
ブルックリンのスケーターが集まったバンドで、ヤケクソ気味のエネルギーと荒々しさが魅力。
あのリック・ルービンもお気に入りのバンド。

ライブが凄まじいと評判なのですが、少なくとも映像ありで聴いたほうがいいですね。

このエントリーをはてなブックマークに追加

2011年9月20日
by リズムファクトリー
0 comments

-X FILEHANDLE
-X EXPR
-X

-Xは以下のオプションで、ファイルテストを行うための演算子です。

演算子には以下のものがあります。

演算子 説明
-r 読み込み可能
-w 書き込み可能
-x 実行可能で
-o 実行者とファイルの所有者が同一
-R 実uid/gidで読み込み可能
-W 実uid/gidで書き込み可能
-X 実uid/gidで実行可能
-O 実uidとファイルの所有者が同一
-e ファイルが存在する
-z ファイルサイズが 0
-s ファイルサイズが 0 以外(大きさを返す)
-f ファイルは通常ファイル
-d ファイルはディレクトリ
-l ファイルはシンボリックリンク
-p ファイルは名前付きパイプ
-S ファイルはソケット
-b ファイルはブロック型の特殊ファイル
-c ファイルはキャラクタ型の特殊ファイル
-t ファイルハンドルが tty としてオープンされている
-u ファイルの setuid ビットがセットされている
-g ファイルの setgif ビットがセットされている
-k ファイルの sticky ビットがセットされている
-T ファイルがテキストファイル
-B ファイルがバイナリファイル
-M perl起動時における、ファイルの更新時刻からの日数
-A perl起動時における、ファイルの参照時刻からの日数
-C perl起動時における、ファイルの作成時刻からの日数

上記の単項演算子は、ファイル名かファイルハンドルを引数として動作し、"真"であるか否かを判定した結果を返します。引数が省略されると、-tではSTDINを調べますが、その他は$_を調べます。特に記述されていなければ、"真"として 1、"偽"として空文字、ファイルが存在しなければ、未定義値を返します。

ファイルテスト演算子の使い方

$file = "/home/httpd/html/index.html";

# ファイルが存在するか確認
if ( -e $file ){
	....
}

ローカルファイルシステムのスーパーユーザには、-r-R-w-Wに対して、常に 1 が返り、モード中のいずれかの実行許可ビットが立っていれば、-x-Xにも 1 が返ることにも注意してください。スーパーユーザが実行するスクリプトでは、ファイルのモードを調べるためには、statを行なうか、実効uidを一時的に別のものにする必要があるでしょう。

-T-Bは、ファイルの最初の数ブロックを調べて、変わった制御コードや上位ビットがセットされているような、通常のテキストには現れない文字を探します。そのような文字が、多く(30%以上) 見つかるようであれば、そのファイルは-Bファイルであると判断され、それほど見つからなければ、-Tファイルとなります。最初のブロックにヌル文字が含まれるファイルも、バイナリファイルとみなされます。-T-B をファイルハンドルに対して用いると、最初のブロックを調べる代わりに、標準入出力バッファを調べます。調べたファイルの中身が何もないときや、ファイルハンドルを調べたときにEOFに達していたときには、-T-Bも"真"を返します。

どのファイルテスト (もしくは、statlstat) 演算子にも、下線だけから成る特別なファイルハンドルを与えると、前回のstat構造体が使われ、システムコールを省きます (-tには使えませんし、lstat-lは実ファイルではなく、シンボリックリンクの情報をstat構造体に残します)。

print "読み込み可\n" if -r _;
このエントリーをはてなブックマークに追加

2011年9月20日
by リズムファクトリー
0 comments

write FILEHANDLE
write EXPR

指定されたファイルに対して、そのファイルに対応させたフォーマットを使って整形されたレコードを書き出します。

writeの使い方

open ( FH, $text );
format FH =
@<<<<<<<<<<<<@>>>>>>>>>>>
$t1 $2
.
$t1 = "You might win some";
$t2 = "but you just lost one";

write FH;
close( FH );

ページの先頭の処理は、自動的に行なわれます。現在のページに整形されたレコードを出力するだけのスペースがない場合には、改ページを行なってページを進め、新しいページヘッダを整形するため、ページ先頭フォーマットが使われ、その後でレコードが書かれます。デフォルトでは、ページ先頭フォーマットは、ファイルハンドルの名前に_TOPをつなげたものですが、ファイルハンドルが選択されている間に、変数$^に名前を設定すれば、動的にフォーマットを変更することができます。 そのページの残り行数は、変数$-に入っており、この変数を 0 に設定することで、強制的に改ページを行なうことができます。

FILEHANDLEを指定しないと、出力はその時点のデフォルト出力チャネルに対して行なわれます。これは、スクリプトの開始時点ではSTDOUTですが、selectで変更することができます。FILEHANDLEEXPRならば、式が評価され、その結果の文字列が実行時にFILEHANDLEの名前として見られます。

このエントリーをはてなブックマークに追加

2011年9月20日
by リズムファクトリー
0 comments

waitpid PID,FLAGS

特定のチャイルドプロセスが終了するのを待ち、消滅したプロセスのpidを返します。指定したチャイルドプロセスが存在しないときには、-1 を返します。ステータスは$?に返されます。

waipidの使い方

use POSIX "wait_h";
...
waitpid(-1,&WNOHANG);

上記のようにすると、ブロックが起こらないようにして、任意のプロセスをwaitします。ブロックなしのwaitは、システムコールwait_pidか、システムコールwaitをサポートしているマシンでのみ利用可能です。しかしながら、特定のpidを 0 のFLAGSでのwaitはどこでも実装されています。(exitしたプロセスのステータス値を覚えておいて、Perlがシステムコールをエミュレートしますが、Perlスクリプトには取り入れられていません。)

このエントリーをはてなブックマークに追加

2011年9月20日
by リズムファクトリー
0 comments

wait

wait(2)システムコールと同様に振る舞います。チャイルドプロセスが終了するのを待ち、消滅したプロセスのpidを返します。チャイルドプロセスが存在しないときには、-1 を返します。ステータスは$?に返されます。返り値が -1 の場合は子プロセスが自動的に回収された可能性があります。

このエントリーをはてなブックマークに追加

2011年9月20日
by リズムファクトリー
0 comments

vec EXPR,OFFSET,BITS

文字列EXPRを符号なしintのベクタとして扱い、引数OFFSETBITSで指定されるビットフィールドの値を返します。左辺値として、代入の対象にすることもできます。BITは、1 から 32 までの 2 のべきを値として使うことができます (1, 2, 4, 8, 16, 32)。

vecで作られたベクターは、論理演算子|&^で扱うこともできます。これらの演算子は、両方の被演算子に文字列を使うと、ビットベクター演算を行ないます。

vecの使い方

ビットベクターを、0 と 1 の文字列や配列に変換するには次のようにします。

$bits = unpack("b*", $vector);
@bits = split(//, unpack("b*", $vector));

ビット長が分かっていれば、* の代わりにその長さを使うことができます。

waitチャイルドプロセスが終了するのを待ち、消滅したプロセスのpidを返します。チャイルドプロセスが存在しないときには、-1 を返します。ステータスは$?に返されます。

このエントリーをはてなブックマークに追加

2011年9月20日
by リズムファクトリー
0 comments

values ASSOC_ARRAY

ハッシュASSOC_ARRAYvalueを返します。

valuesの使い方

%hash = ('Akai', 27, 'Ishikawa', 30);

# スカラコンテキストでは値の個数を返す
print $key = values %hash, "\n";
> 2

foreach $value ( values %hash ) {
  print $value, "\n";
}
> 30
> 27
このエントリーをはてなブックマークに追加

Jump to the top