Ideally, we would learn both, but someone starting out in bioinformatics may have to choose what to learn first depending on the kind of problems actually encountered.

Are there problems for which Biopython is better than Bioperl (or vice-versa)?

• This question is almost entirely opinion based, and therefore generally discouraged on Stack Exchange sites. This is easier to see if you replace 'Biopython' with 'python' and 'Bioperl' with 'perl'.
– gringer
Jun 13 '17 at 5:36
• The only possible objective answer is - advantage of biopython is that it is module in python, on the other hand bioperl has an advantage of being module of perl. So you can reduce your question to "python or perl?" and that's a holy war, not question. Jun 13 '17 at 8:41
• If you can, learn both, and even learn R. But prefer Python if you are to write code that others will need to read, understand and eventually modify. In my (admittedly biased) experience, Python code tends to be easier to understand.
– bli
Jun 13 '17 at 15:14

This usually comes down to religious issues, so let me try and steer it back to more objective grounds:

• What language do you know (better)? Use the library for that one.
• If you know neither and will be learning a language to use the library, the majority opinion would be that Python is easier to learn.
• However, some people say that they "click" with Perl better
• Python is what the majority of bioinformaticians are using at the moment (about 60%). And there is a virtue and aid in using what everyone else is.
• What are your colleagues / collaborators going to be using?
• Conversely, many sing the praises of regular expressions and string handling in Perl, citing speed and ease of use.
• I think the numerics support in Python may be markedly better than that in Perl.
• Agree with agapow's breakdown (even though I'll probably always prefer Ruby over Python). Just as a comment you do find that alot of legacy projects at places like the Sanger use Perl. Depending on what you're aiming to to do initially I wouldn't discount R especially if your project is stats heavy. Later languages to pick up could include Java and other languages that run on the JVM like Clojure / Scala / Groovy which can use Biojava (via Java interop), or something like Rust with Rust-Bio if you want performance. Just make sure you don't start coding in Python 2.7... Jun 28 '17 at 8:04
• I think your 60% number is about right, but I was wondering where you got it from. Do you have a source or is that just your impression? Jul 4 '17 at 22:41
• The 60% is from a survey of published software from a few years a go. No, I don't have the reference. Jul 5 '17 at 14:25

Currently you could use either but a major question is which platform will others be using in the future. AFAIK Perl is only superior to Python for regex.

Based on the trend I see for new programmers and new software being released: Perl is on the way out and Python is still growing.

• “AFAIK Perl is only superior to Python for regex.” — Andy use strict;, which has absolutely no equivalent in Python. There are linters, but nothing substitutes the requirement — provided in Perl by use strict — to explicitly declare identifiers (via my). I like Python but it gives incredibly weak correctness guarantees; even JavaScript surpasses it in this regard. Jun 15 '17 at 12:40

Regading the perl vs python discussion, there is no final answer which language is better, but I have some advice for you:

Learn the language your colleagues or your advisor use. This way you are able to discuss your code with them and also get help if you run into problems.

• I think that the question is more about the libraries than about the language itself. Jun 19 '17 at 15:28

I agree with @story and @agapow here. As it stands right now BioPerl is still much more mature than BioPython. If there's a tool or method that only exists in the BioPerl library then you should probably use BioPerl to accomplish what you need to accomplish. But it's undeniable that BioPython is progressing very quickly and will soon overtake BioPerl. That being said there are still a lot of plus side regarding Perl in the Bioinformatics realm and it will definitely help to be somewhat competent in it.

So in short my answer is to use both! I find myself mostly using Python and BioPython but if I need to accomplish something using a tool that isn't available in the BioPython library or can be accomplished more quickly using Perl I will look towards BioPerl/Perl.