in reply to Re: efficiency (Spelled it wrong :-)
in thread efficientcy

Further to this, if this is a high traffic site, then every bit helps. Under mod_perl, you can get a few more executions per second if you collect all your output and print it with one statement. ie:
#!/usr/bin/perl -w

package Foo;
use CGI qw(:standard);
use strict;  #always!

sub handler {
    my $location = param("place");
    my %subs = (
       'home'=>\&home, # Just add a key and then a value then put your 
       'news'=>\&news, # stuff in a subroutine :) Yay!
    );
    my $output="Constant preamble"; 
    if (!$location){
       $output .= &home;
    }
    elsif (defined(my $action = $subs{$location})){
       # Thanks Chromatic 
       $output .= $action->();                                
    }
    print header,$output;
    return;
}
# Q&A -> Subroutines -> How to make subroutine accessible as foo.pl?foo
# Thanks again :-) 

###############
# Subroutines #
############### 
sub home{
       return "this is home. I am John, hear me roar";
}
sub news{
       return "this is news";
}
The effect of the single print statement is to collect your network write(s) into a single one or two if possible. While for a cgi executed once in a while, the utility is limited, it is a dramatic benefit on UF where a given CGI will run literally 30 times a second, so every write to the tcp/ip stack matters, big time.
--
Jay "Yohimbe" Thorne, alpha geek for UserFriendly
  • Comment on Re: Re: efficiency (Spelled it wrong :-)