#!/usr/bin/perl
use strict; use POPFile::Mutex;
my $kakasi_mutex = new POPFile::Mutex( 'mailparse_kakasi' );
for (1..3) { my $pid = fork();
if ($pid != 0) { next; } else { for (1..1000) { kakasi_test(); } last; } }
sub kakasi_test { my $line = "POPFile はベイズ推定を利用して電子メールを自動的に分類する " . "POP3 プロキシー、および Web インターフェースで、強力なスパムフィルター" . "としても威力を発揮します。ほとんどどのプラットフォームでも、どのメール" . "クライアントとも動作します。 ";
use Text::Kakasi;
$kakasi_mutex->acquire();
log_("Text::Kakasi start.");
Text::Kakasi::getopt_argv("kakasi", "-w -ieuc -oeuc"); $line = Text::Kakasi::do_kakasi($line); Text::Kakasi::close_kanwadict();
$kakasi_mutex->release();
log_("Text::Kakasi done."); }
sub log_ { my ($msg) = $_;
print STDERR "$$: $msg\n"; }
The code will output a log. Here is a example:
-1252:Text::Kakasi start. -1252:Text::Kakasi done. -1252:Text::Kakasi start. -1252:Text::Kakasi done. -1252:Text::Kakasi start. -748:Text::Kakasi start. -748:Text::Kakasi done.
The log shows that Text::Kakasi of the process -748 started before the process -1252 had done. Then, perl.exe crashed.