a) The poor formatting of your post as a stream of conciousness
b) The condemnation of a language based on a single relatively minor bug
c) The unsupported assertions and unrelated criticisms like not enabling strict by default
a) The poor formatting of your post as a stream of conciousness
b) The condemnation of a language based on a single relatively minor bug
c) The unsupported assertions and unrelated criticisms like not enabling strict by default
* Don't use $a, $b for variable names, affecting sort
* Don't use each for iterating over hashes
* Global effects of ..
* next operator is dynamic
sub foo() {
next; #breaks while loop
}
while(defined (my $e = shift @items)) { # "0", 0 is false
foo();
}
* http://www.perl.com/doc/FMTEYEWTK/versus/perl.html* Exception model based on $_ and $@
* print "$foo's fun!";
* `use constant` is broken
* my $a, $b ... declares a global $b. Not DWIM at all.
These language features are not worth the debugging time.
Regarding c) I am not a fan of use strict. If the community's priority is introducing more features like "my $_" than sane exception handling, I don't want to be a part of it and I won't recommend that language to my boss or the next FOSS project.
Did I mention XS bugs ?
Its time for you to produce your magical programming language and claim your fields medal.
Till then, there are people who are using and will be using Perl with endlessly growing user base for three decades.
As a side note and talking of bugs, Perl easily has the best testing culture in the entire open source language scenario.
The only python wart I know is no block scope
for i in [1,2,3]:
print i
print i # still visible
Only functions introduce lexical scope in Python/JS. JS has the ===, this, undefinedThe only ruby wart for me is the difference between block/lambda/Proc and perly features.
Java/Go/Lua don't turn you into a omlette, with their language features. Nor do they leak memory in XS like perl.
C++ is a differnt story.
EDIT: Added JS
http://docs.python.org/3/tutorial/controlflow.html#function-... section 4.7.1 if you're curious
Generally though I'd say Perl has hundreds (or maybe thousands) of warts for every one Python or Ruby has.
http://wiki.python.org/moin/PythonWarts
Here is one of the first Google hits for Ruby:
http://jgaskins.org/blog/2012/05/16/ruby-warts/
Every languages has warts. Lots of them.
Some say it is hard to read. I don't know since I have been using it in production since version 4.
> Regarding c) I am not a fan of use strict
Apparently you also aren't a fan of use warnings, otherwise you would have seen that that my $a, $b doesn't do what you think it does.
# perl -E 'use strict; use warnings; my $a, $b;'
Parentheses missing around "my" list at -e line 1.
What you want is my ($a, $b);