in reply to tblastn unix
system(“tblastn -query -db -genome -out output.blast.tab”);
Try to avoid using single-argument system:
With your current arguments, it may be harmless. But as soon as you add variable interpolation, you will also want to add quoting to prevent the default shell to mess with your arguments. And at that point, you simply can no longer win the game. There is no single default shell for all environments, but each OS and each OS version has a different default shell with different rules for parsing and quoting. Whatever you do, your code will break on some systems. On other system, it may run just accidentally. The same is true for `` and its longer form, qx(). If you want more details, see Ssh and qx, Improve pipe open?, and maybe Re^3: why IPC::Open3 can't execute MS-DOS "dir" command?.
To fix your code, use a string argument for the program name and every single argument:
system('tblastn','-query','-db','-genome','-out','output.blast.tab');
(And by the way: stupid quotes (“”) don't work in perl, you have to use straight double or single quotes ("" or '').)
Alexander
|
|---|