#!/usr/local/bin/perl #↑ここは、perlを使用するために重要です。削除しないよう気を付けてください! # # (C) COPYRIGHT International Business Machines Corp. 1997 # All Rights Reserved # # *.dat ファイルへのパスを指定します。このファイルと # 同じディレクトリにある場合は、変更の必要はありません。 $data_dir = "."; $data_file = "counter.dat"; $keta = 5; open (DATA,"$data_dir/$data_file") || die $!; flock (DATA, 2); $count = ; flock (DATA, 8); close(DATA); $count++; open (DATA,">$data_dir/$data_file") || die $!; flock (DATA, 2); print DATA $count; flock (DATA, 8); close (DATA); $len = length ($count); @num = split (//, $count); &put_main_header (); &put_file_image ("$data_dir/pal.dat"); &put_sub_header (5, 27, 0); &put_file_image ("$data_dir/digl.dat"); for ( $i = 0 ; $i < $keta-$len ; $i++ ) { &put_sub_header (15, 27, $i*15+5); &put_file_image ("$data_dir/dig0.dat"); } foreach $digit (@num) { &put_sub_header (15, 27, $i*15+5); &put_file_image ("$data_dir/dig$digit.dat"); $i++; } &put_sub_header (6, 27, $i*15+5); &put_file_image ("$data_dir/digr.dat"); &put_tail (); exit; sub put_main_header { print "Content-type: image/gif\n\n"; printf ("GIF89a%c%c%c%c%c%c%c", $keta*15+11, 0, 27, 0, 0x87, 0, 0); } sub put_sub_header { $width = $_[0]; $height = $_[1]; $pos = $_[2]; printf ("%c%c%c%c%c%c%c%c", 0x21, 0xf9, 0x04, 0x04, 0, 0, 0, 0); printf ("%c%c%c%c%c%c%c%c%c%c", 0x2c, $pos, 0, 0, 0, $width, 0, $height, 0, 0); } sub put_file_image { $fname = $_[0]; open (IMG, "$fname") || die $!; while () { print; } close (IMG); } sub put_tail { printf ("%c", 0x3b); }