At 1:14 PM -0700 3/5/02, Mark Hazen wrote: >I am hoping there is a someone brilliant on this list that can help me. A >little while ago, I posted to clp.perl asking how I can capture the trace >output from DBI into a variable. Since DBI is an external process, I >couldn't do it just by piping STDERR. Benjamin Goldberg came up with a >module called IO::Capture (see below). It works amazingly well in standard >Perl. Here is a sample script:
Maybe I'm just crazy.... but wouldn't this be simpler? use DBI; $dbh = DBI->connect ("DBI:mysql:test:localhost", "username", "password", { RaiseError => 0, PrintError => 0 }); $filename = "/tmp/dbi_".$$.time().rand(10000).".trace"; DBI->trace( 1, $filename ); $sth = $dbh->prepare (qq{ CREATE TABLE IF NOT EXISTS test_table ( a CHAR(15) NOT NULL, b INT UNSIGNED NOT NULL ) }); $sth->execute (); $sth->finish (); $dbh->disconnect (); print qq{ Output is: }; open(FILE,$filename); print while(<FILE>); close(FILE); The problem with the module listed is that it does some filehandle munging on what is already a munged filehandler. Meaning, it looks like a filehandle, but it's really just a hook into something apache is going to use to output stuff to the error log. Hope that helps... Rob -- When I used a Mac, they laughed because I had no command prompt. When I used Linux, they laughed because I had no GUI.