Perl

sysread()でブロックされる

sysread()で子プロセスからパイプで読み取りをしている。 select()で待ってから1バイトずつsysread()しているのだが、読み取るデータが無くなるとsysread()がブロックしてしまう。 読み取るデーがないときはsysread()がブロックせずに0を返してもらいたい。 …

パターンマッチ コメント行・空行の検出

設定ファイルなどの、コメント行、空行を判断するための正規表現をメモっておく。 ●コメント行にマッチ コメント記号'#'の前にスペースまたはタブだけがある行にマッチする。perl -e '$_=<>; if (/[ \t]*#/) { print "match!\n" } '例 以下のようなパターン…

パターンマッチ 文字列前後の空白を削除する

入力された文字列を処理する前に、前後の空白を除去することが多いので、正規表現をメモっておく。 ●前の空白を削除 文字列先頭のスペースまたはタブを削除する。perl -e '$_=<>; chomp; if (s/^[ \t]+//g) { print "match! [$_]\n" } ' ●後の空白を削除 文…

スレッドでの変数共有(Threadとithreadsの違い)

Thread(Perl 5.6?)ならasyncでスレッドを実行すれば、同じモジュールのレキシカル変数(myで宣言した変数)を共有できた。プログラミングPerl P.536の例がithreads(Perl 5.8)では実行できないithreadsではthreads::sharedを使って変数を明示的に共有する必要が…