Earlier quoted context omitted.
Python never succeeded in scripting. Shell still dominates scripting today. Perl is rooted in scripting.
Where do you think Python has failed as a scripting language? I'm not very familiar with Perl, but overall I can't think of any obvious advantages aside from some of the syntactic sugar around invoking shell commands and string matching. I can see stability as a knock against Python, but outside of 2 vs 3 the only breaking changes I've really had to deal with were relatively short term issues with third party libs.
A few examples:
Perl (flexible/optional function call interface)
print "hello world\n";
Python (the insistence of function call parenthesis) print("hello world")
Perl (direct string substitution thanks to sigils) print "Hello $name\n";
Python (a few formats, keep searching for the perfect ones) print("Hello %s\n" % name);
Perl (a core set of shell like patterns) if (!-d $dir) {
mkdir $dir;
}
chdir $dir;
foreach my $f (glob("*.txt")) {
...
}
Python import os
import glob
# google for usages
Perl (good lexical scopes) if ($do_A) {
my $x = "A";
work_with($x);
} else {
my $x = "B";
work_with($b);
}
Python if do_A:
x = "something" # did I changed x for somewhere else?
...
Perl (a set of defaults balacing the succinctness and readability) my %opts;
while () {
if (/(\w+):\s*(.+)/) {
$opts{$1} = $2;
}
}
Python import ...
...
m = re.match(r'...', line, re_flags)
if m:
opts[m.group(1)] = m.group(2)
Perl's philosophy is "There is more than one way to do it", pick the way that makes most sense to you.Python's philosophy is "There should be one-- and preferably only one --obvious way to do it", but obviousness is subjective to some, and for the rest, you need learn/search/train the "one" way.