use Win32::OLE;
use Win32::SAM;
#use Win32::Slingshot;
$| = 1;
my $URL = "http://www.google.com/";
my $seconds;
$Win32::OLE::Warn = 3;
StartIE();
$seconds = Navigate($URL);
print "Google Page took $seconds seconds to load\n";
SetEditBox("q","Presidents");
$seconds = ClickFormButton("btnG");
print "Query Page took $seconds seconds to load\n";
Going through the code line by line...
$| = 1;
Dollar, split vertical bar ($|) is a Perl predefined variable.
When it is set to a non zero number it is used to make sure that all logging is displayed in real time. I didn't want to have to wait for the buffer to get to a certain size before seeing what was going on with samie in the output log.
Here is the definition of this predefined variable in the Perl Documentation that comes with ActivePerl. You will find this documentation here: c:\perl\html
If set to nonzero, forces a flush right away and after every write or print
on the currently selected output channel. Default is 0 (regardless of whether
the channel is really buffered by the system or not;
$|
tells you only whether you've asked Perl explicitly to flush after each write).
STDOUT will typically be line buffered if output is to the terminal and block
buffered otherwise. Setting this variable is useful primarily when you are
outputting to a pipe or socket, such as when you are running a Perl program
under rsh and want to see the output as it's happening. This
has no effect on input buffering. See
getc in the perlfunc
manpage for that. (Mnemonic: when you want your pipes to be piping hot.)