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 (<In>) {
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.
I agree scope leakage is a major stumbling block with Python for sure, but it only occurs with control-flow so rarely causes actual issues once you're aware of it. Aside from that my biggest qualms with Python are the typesystem and whitespace for scoping, but those two don't cause much trouble for typical scripting purposes.
And, for what it's worth, Python's f-strings have been the go-to string formatting approach since 2016 so your example becomes something like:
print(f"Hello {name}")
Which is doubly nice because you can also use format specifiers and arbitrary expressions like so: >>> f"The current year is {datetime.now().year} and the value of pi is approximately: {22/7:.2f}"
'The current year is 2022 and the value of pi is approximately: 3.14'