Subject: | Bio::Factory::EMBOSS dies on OSX when checking for operating system |
BioPerl-Run-1.006900
perl 5.14.2
Mac OS X 10.6.8
Running a simple script using 'water' program from EMBOSS dies when trying to execute the program.
-------code---------
#!/usr/bin/perl -w
use strict;
use Bio::Factory::EMBOSS;
$|++;
my $f = Bio::Factory::EMBOSS -> new();
my $charge = $f->program('water');
my %input = (
-asequence => 'asis:gatcgatcgatgcat',
-bsequence => 'asis:cgatgcatgctactg',
);
print "CHECK 1\n";
$charge->run(\%input);
print "CHECK 2\n";
Show quoted text
--------end code-------------------
Running above script I only see the first CHECK printed and no other messages. I never get the second check printed.
After checking with Trace:
-------code---------------
perl -d:Trace emboss_water.pl
>> emboss_water.pl:4: $|++;
>> emboss_water.pl:6: my $f = Bio::Factory::EMBOSS -> new();
>> /Users/piatekm/src/bioperl-run/lib/Bio/Factory/EMBOSS.pm:116: my($class,@args) = @_;
>> /Users/piatekm/src/bioperl-run/lib/Bio/Factory/EMBOSS.pm:117: my $self = $class->SUPER::new(@args);
>> /Users/piatekm/src/bioperl-live/Bio/Root/Root.pm:253: my $class = shift;
>> /Users/piatekm/src/bioperl-live/Bio/Root/Root.pm:254: my $self = {};
>> /Users/piatekm/src/bioperl-live/Bio/Root/Root.pm:255: bless $self, ref($class) || $class;
>> /Users/piatekm/src/bioperl-live/Bio/Root/Root.pm:257: if(@_ > 1) {
>> /Users/piatekm/src/bioperl-live/Bio/Root/Root.pm:265: return $self;
>> /Users/piatekm/src/bioperl-run/lib/Bio/Factory/EMBOSS.pm:120: my($location) =
>> /Users/piatekm/src/bioperl-live/Bio/Root/RootI.pm:405: shift; #discard self
>> /Users/piatekm/src/bioperl-live/Bio/Root/RootI.pm:406: my $order = shift;
>> /Users/piatekm/src/bioperl-live/Bio/Root/RootI.pm:408: return @_ unless $_[0] && $_[0] =~ /^\-/;
>> /Users/piatekm/src/bioperl-run/lib/Bio/Factory/EMBOSS.pm:124: $self->{ '_programs' } = {};
>> /Users/piatekm/src/bioperl-run/lib/Bio/Factory/EMBOSS.pm:125: $self->{ '_programgroup' } = {};
>> /Users/piatekm/src/bioperl-run/lib/Bio/Factory/EMBOSS.pm:126: $self->{ '_groups' } = {};
>> /Users/piatekm/src/bioperl-run/lib/Bio/Factory/EMBOSS.pm:128: $self->location($location) if $location;
>> /Users/piatekm/src/bioperl-run/lib/Bio/Factory/EMBOSS.pm:130: $self->_program_list; # retrieve info about available programs
>> /Users/piatekm/src/bioperl-run/lib/Bio/Factory/EMBOSS.pm:257: my ($self) = @_;
>> /Users/piatekm/src/bioperl-run/lib/Bio/Factory/EMBOSS.pm:258: if( $^O =~ /Mac/i ) { return; }
>> /Users/piatekm/src/bioperl-run/lib/Bio/Factory/EMBOSS.pm:260: local * SAVERR;
>> /Users/piatekm/src/bioperl-run/lib/Bio/Factory/EMBOSS.pm:260: local * SAVERR;
>> /Users/piatekm/src/bioperl-run/lib/Bio/Factory/EMBOSS.pm:261: open SAVERR, ">&STDERR";
>> /Users/piatekm/src/bioperl-run/lib/Bio/Factory/EMBOSS.pm:262: open STDERR, ">/dev/null";
------end code----------
It looks like the last line executed from my code is when the 'factory' gets created. Then it goes into EMBOSS.pm.
Looking into EMBOSS.pm at line 258 it looks like it does not return from _program_list subroutine?
Marek