el problema de los módulos gráficos que da el cpan (sino estoy mal el mejor es el GD) es la instalación, estoy trabajando en un servidor IRIX64 OS5, acerca del manejo de xbm encontré un ejemplo de un contador este es el código por sí a alguien le interesa
Código PHP:
#!/usr/bin/perl
# X-BITMAP
#Digitos en XBM
$num{0,0} = "0xf0,0x0f";
$num{0,1} = "0xf0,0x0f";
$num{0,2} = "0x0c,0x30";
$num{0,3} = "0x0c,0x30";
$num{0,4} = "0x0c,0x30";
$num{0,5} = "0x0c,0x30";
$num{0,6} = "0x0c,0x30";
$num{0,7} = "0x00,0x00";
$num{0,8} = "0x00,0x00";
$num{0,9} = "0x0c,0x30";
$num{0,10} = "0x0c,0x30";
$num{0,11} = "0x0c,0x30";
$num{0,12} = "0x0c,0x30";
$num{0,13} = "0x0c,0x30";
$num{0,14} = "0xf0,0x0f";
$num{0,15} = "0xf0,0x0f";
$num{1,0} = "0x00,0x00";
$num{1,1} = "0x00,0x00";
$num{1,2} = "0x00,0x30";
$num{1,3} = "0x00,0x30";
$num{1,4} = "0x00,0x30";
$num{1,5} = "0x00,0x30";
$num{1,6} = "0x00,0x30";
$num{1,7} = "0x00,0x00";
$num{1,8} = "0x00,0x00";
$num{1,9} = "0x00,0x30";
$num{1,10} = "0x00,0x30";
$num{1,11} = "0x00,0x30";
$num{1,12} = "0x00,0x30";
$num{1,13} = "0x00,0x30";
$num{1,14} = "0x00,0x00";
$num{1,15} = "0x00,0x00";
$num{2,0} = "0xf0,0x0f";
$num{2,1} = "0xf0,0x0f";
$num{2,2} = "0x00,0x30";
$num{2,3} = "0x00,0x30";
$num{2,4} = "0x00,0x30";
$num{2,5} = "0x00,0x30";
$num{2,6} = "0x00,0x30";
$num{2,7} = "0xf0,0x0f";
$num{2,8} = "0xf0,0x0f";
$num{2,9} = "0x0c,0x00";
$num{2,10} = "0x0c,0x00";
$num{2,11} = "0x0c,0x00";
$num{2,12} = "0x0c,0x00";
$num{2,13} = "0x0c,0x00";
$num{2,14} = "0xf0,0x0f";
$num{2,15} = "0xf0,0x0f";
$num{3,0} = "0xf0,0x0f";
$num{3,1} = "0xf0,0x0f";
$num{3,2} = "0x00,0x30";
$num{3,3} = "0x00,0x30";
$num{3,4} = "0x00,0x30";
$num{3,5} = "0x00,0x30";
$num{3,6} = "0x00,0x30";
$num{3,7} = "0xf0,0x0f";
$num{3,8} = "0xf0,0x0f";
$num{3,9} = "0x00,0x30";
$num{3,10} = "0x00,0x30";
$num{3,11} = "0x00,0x30";
$num{3,12} = "0x00,0x30";
$num{3,13} = "0x00,0x30";
$num{3,14} = "0xf0,0x0f";
$num{3,15} = "0xf0,0x0f";
$num{4,0} = "0x00,0x00";
$num{4,1} = "0x00,0x00";
$num{4,2} = "0x0c,0x30";
$num{4,3} = "0x0c,0x30";
$num{4,4} = "0x0c,0x30";
$num{4,5} = "0x0c,0x30";
$num{4,6} = "0x0c,0x30";
$num{4,7} = "0xf0,0x0f";
$num{4,8} = "0xf0,0x0f";
$num{4,9} = "0x00,0x30";
$num{4,10} = "0x00,0x30";
$num{4,11} = "0x00,0x30";
$num{4,12} = "0x00,0x30";
$num{4,13} = "0x00,0x30";
$num{4,14} = "0x00,0x00";
$num{4,15} = "0x00,0x00";
$num{5,0} = "0xf0,0x0f";
$num{5,1} = "0xf0,0x0f";
$num{5,2} = "0x0c,0x00";
$num{5,3} = "0x0c,0x00";
$num{5,4} = "0x0c,0x00";
$num{5,5} = "0x0c,0x00";
$num{5,6} = "0x0c,0x00";
$num{5,7} = "0xf0,0x0f";
$num{5,8} = "0xf0,0x0f";
$num{5,9} = "0x00,0x30";
$num{5,10} = "0x00,0x30";
$num{5,11} = "0x00,0x30";
$num{5,12} = "0x00,0x30";
$num{5,13} = "0x00,0x30";
$num{5,14} = "0xf0,0x0f";
$num{5,15} = "0xf0,0x0f";
$num{6,0} = "0xf0,0x0f";
$num{6,1} = "0xf0,0x0f";
$num{6,2} = "0x0c,0x00";
$num{6,3} = "0x0c,0x00";
$num{6,4} = "0x0c,0x00";
$num{6,5} = "0x0c,0x00";
$num{6,6} = "0x0c,0x00";
$num{6,7} = "0xf0,0x0f";
$num{6,8} = "0xf0,0x0f";
$num{6,9} = "0x0c,0x30";
$num{6,10} = "0x0c,0x30";
$num{6,11} = "0x0c,0x30";
$num{6,12} = "0x0c,0x30";
$num{6,13} = "0x0c,0x30";
$num{6,14} = "0xf0,0x0f";
$num{6,15} = "0xf0,0x0f";
$num{7,0} = "0xf0,0x0f";
$num{7,1} = "0xf0,0x0f";
$num{7,2} = "0x00,0x30";
$num{7,3} = "0x00,0x30";
$num{7,4} = "0x00,0x30";
$num{7,5} = "0x00,0x30";
$num{7,6} = "0x00,0x30";
$num{7,7} = "0x00,0x00";
$num{7,8} = "0x00,0x00";
$num{7,9} = "0x00,0x30";
$num{7,10} = "0x00,0x30";
$num{7,11} = "0x00,0x30";
$num{7,12} = "0x00,0x30";
$num{7,13} = "0x00,0x30";
$num{7,14} = "0x00,0x00";
$num{7,15} = "0x00,0x00";
$num{8,0} = "0xf0,0x0f";
$num{8,1} = "0xf0,0x0f";
$num{8,2} = "0x0c,0x30";
$num{8,3} = "0x0c,0x30";
$num{8,4} = "0x0c,0x30";
$num{8,5} = "0x0c,0x30";
$num{8,6} = "0x0c,0x30";
$num{8,7} = "0xf0,0x0f";
$num{8,8} = "0xf0,0x0f";
$num{8,9} = "0x0c,0x30";
$num{8,10} = "0x0c,0x30";
$num{8,11} = "0x0c,0x30";
$num{8,12} = "0x0c,0x30";
$num{8,13} = "0x0c,0x30";
$num{8,14} = "0xf0,0x0f";
$num{8,15} = "0xf0,0x0f";
$num{9,0} = "0xf0,0x0f";
$num{9,1} = "0xf0,0x0f";
$num{9,2} = "0x0c,0x30";
$num{9,3} = "0x0c,0x30";
$num{9,4} = "0x0c,0x30";
$num{9,5} = "0x0c,0x30";
$num{9,6} = "0x0c,0x30";
$num{9,7} = "0xf0,0x0f";
$num{9,8} = "0xf0,0x0f";
$num{9,9} = "0x00,0x30";
$num{9,10} = "0x00,0x30";
$num{9,11} = "0x00,0x30";
$num{9,12} = "0x00,0x30";
$num{9,13} = "0x00,0x30";
$num{9,14} = "0xf0,0x0f";
$num{9,15} = "0xf0,0x0f";
$max_length = 4;
$width = 16*($max_length+1);
$height = 16;
#archivo donde se va a guardar la cuenta
$countfile = "counter.txt";
$srcfile = $ENV{'QUERY_STRING'};
if ($srcfile eq "") {
$srcfile="test";
}
$now_host = $ENV{'REMOTE_ADDR'};
if ($now_host eq "") {
$now_host="test";
}
if ( open(FILE, "<$countfile") ) {
@file = <FILE> ;
close(FILE);
} else {
print "Error : Counter File is not found!\n";
flock(LOCK, 8);
close(LOCK);
exit(1);
};
$joinedfile = join( '', @file );
@count_ = split(/n/,$joinedfile);
open(OUT, ">$countfile");
foreach $in (@count_) {
($in_counter, $hostname ,$checkfile) = split(/,/, $in, 3);
if ($checkfile eq $srcfile) {
$found_flag = "yes";
if ($now_host ne $hostname ) {
$counter = $in_counter+1;
} else {
$counter = $in_counter;
};
print OUT "$counter,$now_host,$srcfile\n";
} else {
print OUT "$in\n";
}
}
if ($found_flag ne "yes"){
print OUT "1,$now_host,$srcfile\n";
};
close(OUT);
flock(LOCK, 8);
close(LOCK);
($sec,$min,$hour,$day,$mon,$year) = localtime(time);
$mon = $mon + 1;
$year = $year + 1900 ;
open(LOCK, "<counter.lock");
flock(LOCK, 2);
open(LOG, ">>COUNTLOG.TXT");
print LOG "$year/$mon/$day,$hour:$min:$sec , $ENV{'QUERY_STRING'} , $ENV{'REMOTE_ADDR'} , $ENV{'HTTP_USER_AGENT'} , $ENV{'HTTP_REFERER'}\n";
close(LOG);
flock(LOCK, 8);
close(LOCK);
print <<EOF;
Content-type: image/x-xbitmap
#define cg_width $width
#define cg_height $height
static char cg_bits[] = {
EOF
foreach $a (0..15) {
$count__ = sprintf("%05d",$counter);
foreach $i (0..$max_length) {
$num_ = substr($count__,$i,1);
print "$num{$num_ , $a},";
}
print "\n";
}
print "}\;\n\n";
__END__