[Bioperl-l] Bio::Tools::Genscan
Jason Stajich
jason@chg.mc.duke.edu
Wed, 30 May 2001 22:19:25 -0400 (EDT)
On Wed, 30 May 2001, Hilmar Lapp wrote:
> "Pan, Youlian" wrote:
> >
> > Hello,
> >
> > I am new to Bioperl and writing-up a parser using some of Bioperl modules
> > for my thesis work at Canadian Bioinformatics Resource in Halifax. I have
> > used Bio::Tools::Genscan, it worked fine when I invoke my perl script on
> > command line in Unix, but when I try to print to a web browser (IE or
> > netscape), I am not able to see anything after I use Bio::Tools::Genscan.
> >
> > Follow are part of my code:
> >
> > ##########################################################
> >
> > ..............
> >
> > print "Content-type: text/html\n\n";
> > print "this is a test\n";
> > @exons = get_exons();
> >
> > ........................
> >
> > sub get_exons {
> > print "<br>I am in the get exons\n";
> > $genscan = Bio::Tools::Genscan->new(-file => 'result.genscan');
> > print "<br> I am after Genscan<br>\n";
> > ..................
> >
> > return @exons;
> > }
> >
> > Print out on browser:
> > this is a test
> > I am in the get exons
> >
> > Print out at UNIX:
> > Content-type: text/html
> >
> > this is a test
> > I am in the get exons
> > I am after Genscan
> > ..................
> >
> > ############################################################
> >
> > Could anyone explain this discrepancy?
>
> The cgi-script probably cannot find or cannot access the
> 'result.genscan' file. Note that a cgi-script usually will run under
> another user, usually 'nobody'. It may also need directory information
> in order to find it.
>
> I guess what happens is that the Genscan->new() call fails with an
> exception because the file cannot be found or not opened. The
> exception message is printed to STDERR, which why you don't see it in
> the browser (depending on the server's settings, you should still find
> it in the httpd error-log), and after that the script terminates.
>
> You can enclose the call in an eval {} and examine $@ after the eval
> (eval will catch the exception). You can also test for existence and
> readability like in
>
> if(-r 'somefile') {
> print "file is readable (and therefore also exists)\n";
> } else {
> print "file is not readable, open with Genscan will fail\n";
> }
>
> Hilmar
or use CGI::Carp with fatalsToBrowser. Also you probably want to make sure
that Bio::Tools::Genscan is in your system perl lib or that you have set
PERL5LIB to include bioperl.
> --
> -------------------------------------------------------------
> Hilmar Lapp email: lapp@gnf.org
> GNF, San Diego, Ca. 92121 phone: +1-858-812-1757
> -------------------------------------------------------------
> _______________________________________________
> Bioperl-l mailing list
> Bioperl-l@bioperl.org
> http://bioperl.org/mailman/listinfo/bioperl-l
>
Jason Stajich
jason@chg.mc.duke.edu
Center for Human Genetics
Duke University Medical Center
http://www.chg.duke.edu/