#!/usr/bin/perl -T $fcgi_fresh = 0; #Force freshness sub fcgi_localize(){ if (-e "./lc_cache/localizer_consts-$_[0].dat" && -e "./lc_cache/localizer_locals-$_[0].dat" && $fcgi_fresh == 0){ #print "READ"; &localizer_read($_[0]); }else{ #print "WRITE"; &fcgi_localizer($_[0]); &localizer_write($_[0]); } } sub fcgi_localizer(){ require Devel::Symdump; $obj = Devel::Symdump->new(); @global_constants = ('nky','nkt','nfw','connectionInfo','db','host','passwd','server_id','user','reqs'); my @global_s= $obj->scalars; my @global_a = $obj->arrays; my @global_h = $obj->hashes; my @functions = $obj->functions; my @globals = @global_s; push(@globals,@global_a); push(@globals,@global_h); undef %saw; @saw{@globals} = (); @globals = sort keys %saw; undef %saw; @saw{@functions} = (); @functions = sort keys %saw; foreach $lvar (@globals){ $valid = 1; foreach $fun (@functions){ if ($fun eq $lvar){ $valid = 0; } } if ($valid == 1){ $lvar =~ s/main:://g; if ($lvar !~ m/::/){ if ($lvar =~ m/^[a-z]/){ if ($lvar ne "stdout" && $lvar ne "stderr" && $lvar ne "stdin"){ unless ($$lvar eq ""){ #push (@global_constants,$lvar); }else{ push (@global_locals,$lvar); } } } } } } #foreach (@global_locals){ # print "Local: ($_)
\n"; #} # #foreach (@global_constants){ # print "Constant: $_
\n"; #} } sub localizer_write{ open(WRITER,">./lc_cache/localizer_consts-$_[0].dat") || print "Failed to create Loczlizer Cache!"; foreach (@global_constants){ print WRITER "$_\n"; } close(WRITER); open(WRITER,">./lc_cache/localizer_locals-$_[0].dat") || print "Failed to create Loczlizer Cache!"; foreach (@global_locals){ print WRITER "$_\n"; } close(WRITER); } sub localizer_read{ open(READER,"./lc_cache/localizer_consts-$_[0].dat") || print "Failed to create Loczlizer Cache!"; (@global_constants) = ; close(READER); open(READER,"./lc_cache/localizer_locals-$_[0].dat") || print "Failed to create Loczlizer Cache!"; (@global_locals) = ; close(READER); chomp(@global_constants); chomp(@global_locals); }