Perl конечно хороший язык, но PHP рулит
----------------------------------------
header("Content-type: image/png");
session_start();
//Config
$font = 4; //Largest built-in font
$width = 100; //Image width
$height = 35; //Image height
$num = 255; //Number of random background lines $minc = 4; //Minimum word length
$maxc = 8; //Maximum word length
// seed with microseconds
function make_seed()
{
list($usec, $sec) = explode(' ', microtime());
return (float) $sec + ((float) $usec * 100000);
}
mt_srand(make_seed());
$len=mt_rand($minc,$maxc);
$string="";
for($i=0;$i<$len;$i++)
{
if(mt_rand(0,1))
$c=mt_rand(65,90);
else
$c=mt_rand(97,122);
$string.=chr($c);
}
$_SESSION['word_verify']=$string;
/*********************************************************/
$im = imagecreatetruecolor($width,$height);
$tcolor = imagecolorallocate($im, 0, 0, 0);
$bcolor = imagecolorallocate($im, 255, 255, 255);
$fx = imagefontwidth($font);
$fy = imagefontheight($font);
$x=mt_rand(2,$width-$fx*strlen($string)-2);
$y=mt_rand(2,$height-$fy-2);
imagefill($im, 1, 1, $bcolor);
imagerectangle( $im, 0, 0, $width-1, $height-1, $tcolor);
//Drawing random lines
for($i=0;$i<$num;$i++)
{
$tx = mt_rand(0,$width);
$ty = mt_rand(0,$height);
$dx = mt_rand(mt_rand(-3,0),mt_rand(0,3));
$dy = mt_rand(mt_rand(-3,0),mt_rand(0,3));
imageline($im,$tx,$ty,$tx+$dx,$ty+$dy,$tcolor);
}
//cleaning box for text
imagefilledrectangle( $im, $x-1, $y-1, $x+$fx*strlen($string)+1, $y+$fy+1, $tcolor);
imagefilledrectangle( $im, $x-1, $y-1, $x+$fx*strlen($string)+1, $y+$fy+1, $bcolor);
//Writing text
imagestring($im, $font, $x, $y, $string, $tcolor);
imagestring($im, $font, $x+1, $y, $string, $tcolor);
imagerectangle( $im, 0, 0, $width-1, $height-1, $tcolor);
imagepng($im);
imagedestroy($im);