Call CGI script from SSI
Values of CGI Variables
Serve Images via CGI
Serve Images via CGI
Use Regular Expressions to Substitute Non-Constant Values in Python
Use Regular Expressions to extract the title from HTML using Perl
Get just the text of a HTML string using Perl
How to manipulate dates
Faster Laptop - Powercfg.exe



Call CGI Script from SSI:
This is not a complete discussion, just how to do this with cgiwrap.

Without debugging:
< !--#include virtual="/cgi-sys/cgiwrap/username/filename.cgi?query=lcd tv" -- >

With debugging:
< !--#include virtual="/cgi-sys/cgiwrapd/username/filename.cgi?query=lcd tv" -- >

Values of CGI Variables:
Say you want to know what variables are available in a CGI script? Best to print it out. Try this perl snippet:
foreach (sort keys %ENV) { print "$_ = $ENV{$_}\n";}

Serve Images via CGI:
If you use ebay to serve your images, it might happen that you want to use a nice mod-rewrite script to serve images after calling cgi. Well I did anyway. The trouble was that I couldnt get the

IMG src=url-that-mod-rewrite-fixes

to get "fixed" via cgi. What was wrong??? Frankly many things. But the key is that unlike most cgi files that have a first line of content-Type: text/html, to serve an image you need to print (from cgi)

Location: ebay's-image-that-the-cgi-program-fixed\n\n.

See What's Going On With Redirects:
So, let's imagine you're trying to write some nasty mod-rewrite with many redirects. How can you see what's going on without writing a spider? Use

Web Sniffer

How to Construct more Complex Python Substitutions in Regular Expressions
OK, let's say you need to substitute something more complex than a fixed string; how do you specify the variable you might build up/calculate?! All the examples show simple contants, or use regex meta-characters.

In Python you can specify a function for the pattern. That function must take exactly one argument (except for self if needed as part of a class).

Here's a crude example:

def linkRep (self, matchobj):
   return (self.replPrefix+matchobj.group(0)+' </a>')

def addLinks (self, str, pattern, target):
   _p = re.compile (pattern, re.IGNORECASE)
   self.replPrefix = '<a href="' + target + '"> '
   _ret = _p.sub (self.linkRep, str)
   return (_ret)

How to manipulate dates:
Coming soon

Use Regular Expressions to extract the title from HTML using Perl

   if ($htmlfile =~ /<title>/i ) {
       $title = $htmlfile;
       $title =~ /<title>(.*)<\/title>/ ;
       $title = $1;
       # Less efficent solution:
       # $title =~ s/^.*<title>//i;
       # $title =~ s/<\/title>.*$//i;
       print "title: $title \n";
   }
Get just the text of a HTML string using Perl
use HTML::Parse;
use HTML::FormatText;
$plain_text = HTML::FormatText->new->format(parse_html($htmlfile));

Faster Laptop - Powercfg.exe:
OK, I got my snazzy new Dell Laptop Workstation and when I ran Monte Carlo simulations on it the performance was pathetic. Sure with two processors at least I could still read my email, but geez, get a life, this is a very cool machine I should get a result in under 10 minutes. I killed it after 3 hours.

There's a little known command called powercfg.exe that you can access via the cmd prompt in Windows XP. There's some documentation for this command on the web, but it's pretty confusing about exactly how to execute the commands. Here's the tricks I needed to figure out:

1. c:\>powercfg.exe /list
- shows all the power configurations

2. c:\>powercfg.exe /query
- Shows current power configuration. Change the selected one with the power window settings:

control panel:display properties, then select the Screen Saver tab. Click the Power... button

3. powercfg.exe /QUERY "Maximum Performance (QuickSet)"
- Shows the settings for the power configuration called maximum performance. Notice the double quotes to deal with the spaces. The text typed matches the text returned by the /list command.

4. powercfg.exe /change "Maximum Performance (QuickSet)" /Processor-Throttle-AC none
Changes the setting for the Processor Throttle when the machine is plugged in. Notice the same double quotes and copying for the power configuration. Notice that the parameter is a copy and paste of the parameter you want to change with the spaces replaced by dashes and the parens removed.

The sensible choices for Processor-Thorttle-AC are:
None: - Always run at the hightest perforance state
Constant - Always run at the lowest performance state
Adaptive - Run at a performance state that is chosen automatically according to demand
Degrade - Always run at the lowest performance state, and use additional linear performance reduction as battery discharges


Last Modified: September 3, 2008
Sandra Carrico
scarrico(put an at here)pacbell.net