Net::Telnetモジュールのエラーハンドリング
2004-04-23-1 / カテゴリ: [programming][network][perl] / [permlink]

login()の失敗などは、デフォルトで 'die' を行っているため、他の処理を行い
たい(ログファイルにイベントを出力して終了とか)場合は、ErrMode を変更す
る必要がある。
(A) new する際に、Errmode を指定する
$a = Net::Telnet->new(Timeout => 10, Errmode => "return");
(B) new した後に、Errmode を変更する。
$a->errmode("return");
以上で、
$return = $telnet->login('user', 'pass');
が失敗した際は、$return は undef になる。(成功時はErrmodeに関係なく1)

cygwin/Perl localtime で GMT の値が返ってくる
2004-04-13-2 / カテゴリ: [win][cygwin][programming][perl] / [permlink]

localtime 実行前に、
use POSIX 'tzset';
tzset();
を行っておく。
http://www.cygwin.com/ml/cygwin/2004-03/msg00866.html

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"など定数を直接指定してやれば不要

複数ファイル内の特定文字列を一括置換
2004-03-10-2 / カテゴリ: [perl][command] / [permlink]

$ perl -p -i.bak -e 's/strings/strings-with/g' *
カテゴリ: perl / 前ページ 1 2 3 4 5

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