> Care to show us a function definition in Python?
> And now one in Perl?
Why? They're easy enough to find, without the cherry picking involved in someone making one up here. But here's a perl function straight from the perl docs:
sub foo ($left, $right) {
return $left + $right;
}
Of course this is also a perl function:
sub foo {
return $_[0] + $_[1];
}
> Why do the Python function arguments have names, and the Perl function seems to have no arguments at all?
Because python functions have named parameters (though of course also have *args and **kwargs), while perl functions use implicit positional parameters or named parameters depending on developer choice.
> Care to explain in 3 sentences why accessing a value in a hash table in Perl is done with $ and not with @???
The value is a scalar and thus uses $. That's was only one sentence, sorry. Now it is three.
> Why does Perl use $ and @ when Python obviously does not need this magic?
It indicates which of the fundamental types the value is. Which allows those types to have independent namespaces and also provides information to the programmer/code reader.
> Oh, wait ... did I mix up @ with % again?
Yeah, on purpose I assume. It's almost like those symbols have a use and indicate what fundamental type is in play.
Mind you in the last 20 years I've done at least 10000x more python programming than perl programming, so there are probably more articulate defenses of perl somewhere by people who have been using it more often.