Perl 文法チェック
2004-04-09-1 / カテゴリ: [programming][perl] / [permlink]

% perl -c script.pl
コンパイルのみ行い、実行はしない。
-w と併用も可能
正常なものは syntax OK と表示される。
1行目に #!/usr/bin/perl などがあっても実行はされない。

オープンした画像ファイルをCGIで表示
2004-04-02-1 / カテゴリ: [programming][perl][CGI] / [permlink]

print "Content-type: application/octet-stream\n\n";
open(F, "gazou.xxx");
binmode(F);
print while(<F>);
close(F);

fork で多重プロセス起動・全ての子プロセスを待って親の終了
2004-04-01-2 / カテゴリ: [programming][perl] / [permlink]

while( ) {
	if ($pid[$i] = fork) {
		親(何もしない)
	} elsif (defined $pid[$i]) {
		子(並列処理)
		exit;
	} else {
		fork失敗
	}
}
foreach(@pid) { # 子のwait  ("wait"ではダメ(子が一つ終了すると抜ける))
	$cpid = waitpid $_, 0;
}
exit;

複数のファイルを一気に unlink
2004-04-01-1 / カテゴリ: [programming][perl] / [permlink]

配列・リストを渡す。
もしくは、
unlink </foo/bar/*>

任意のパスのモジュール用に @INC へパスを追加
2004-03-30-1 / カテゴリ: [programming][perl] / [permlink]

use lib "/path/to";
変数に格納されたパスはなぜか無効…
use lib "$path";   <= NG
また、require 先で use lib を宣言し、呼出元で use Path::Module; も無効
require 先で use lib -> use Path::Module をまとめてやっておけばよい

変数が無効なのは、use はコンパイル時に読み込まれるため。変数に値が格納さ
れるのは実行時

fork で多重プロセス起動 Solaris 8
2004-03-23-1 / カテゴリ: [programming][perl] / [permlink]

while( ) {
	if ($pid = fork) {
		# おや
		next;
	} else {
		# こ
		(並列処理)
		exit;
	}
}
(子を待たずに処理)

flock によるファイルロック / ロック失敗時は待機せずに終了
2004-03-22-2 / カテゴリ: [programming][perl] / [permlink]

http://www.ichikoro.com/webp/bk/00055.html
http://ns1.php.gr.jp/pipermail/php-users/2004-January/020410.html
{
	open(F, "file");
	$lock = flock(F, (LOCK_EX | LOCK_NB));
	unless ($lock) { print "ロック中!終了します\n"; exit 1;}
}
こんな感じ

flock によるファイルロック
2004-03-22-1 / カテゴリ: [programming][perl] / [permlink]

use Fcntl qw(:flock);
がないと、動かん
SunOS 5.8

と思ったけど、前言撤回
"LOCK_EX"などの文字定数を使う場合は、Fcntlが必要
"2"など定数を直接指定してやれば不要
カテゴリ: programming / 前ページ 1 2 3 4 5 6 7

最終更新時間: 2013-05-02 16:12