Here is the code: sub start_CM_Synergy() { my ($database_name) = @_; my $dbData = `grep $database_name /common/gm/scripts/dbInfo`; if($dbData eq "") { return 1; } my @Fld = split(/\s+/, $dbData); $dbName = $Fld[0]; $dbId = $Fld[1]; $ccm_home = $Fld[2]; $dbEnghost = $Fld[3]; my $dbPath = $Fld[4]; $home_dir = $ENV{HOME}; $ENV{CCM_ENGLOG} = "$home_dir/ccm_eng_" . "$dbId" . ".log"; $ENV{CCM_HOME} = "$ccm_home"; $ENV{CCM_UILOG} = "$home_dir/ccm_ui_" . "$dbId" . ".log"; $ENV{PATH} = $ENV{PATH} . ":" . "$ccm_home/bin"; `/common/gm/scripts/ccm_ini_init $dbId`; my $res=`$ccm_home/bin/ccm start -nogui -f $home_dir/.ccm_$dbId.ini -d $dbPath/$dbName -m -q -h $dbEnghost`; print LOG $res; # Nothing is being printed if ($res ne "") { $ENV{CCM_ADDR}=$res; return 0; } else { return 1; } return 0; # subroutine not even returning to the caller with an invalid status }