Re:Why Perl?
by TylerE on Tuesday November 15, 2011 @12:24PM
(#3239085)
This is the language that doesn't have proper function arguments, exceptions, objects, etc, and you're calling OTHER languages a subset? Sorry, I just don't see it. What exactly is so awesome in Perl that isn't easily done in Python/Ruby/Scala/D/Haskell?
[ Parent
| on HN ]
> proper function arguments
my ($a, $b, $c) = @_; # this works
Or I can do things like my ($first, @rest) = @_;
giving me features which require all manner of annoying syntax in Python.> exceptions
http://search.cpan.org/~nilsonsfj/Error-TryCatch-0.07/lib/Er...
or just eval and see what the output is.
> objects
Edit: I was being an asshole Perl has a decent object system out of the box and Moose for those times when you want type constraints.
package MyClass;
use base 'Parent';
sub new { my $class = shift; bless { prop1 => undef }, $class; }
package main;
my $obj = new MyClass;
> etcLexical scoping, anonymous coderefs that can be passed as data, modifiable syntax, reference semantics, and the regex engine I see other languages comparing theirs too.
> giving me features which require all manner of annoying syntax in Python
def foo(first, *rest):
vs sub foo{
my ($first, @rest) = @_;
? >>> def foo(first, *rest):
... print first
... print rest
>>> foo([1,2,3])
[1,2,3]
()
* sub foo {
my ($first,@rest) = @_;
print $first . "\n";
print @rest;
}
foo (1,2,3);
1
23
*It's probably my Python deficiency. My claim that Python's syntax was going to be uglier is probably wrong, but I think the claim that Perl's is appreciably worse is also wrong. We can all get along!
Not sure I follow you. Your python example is very explicitly passing a _single_ arguement, a list of three items. If you call it the same way you call the perl code, you'd have the same result.
Exactly, it's a trade-off. Making the other side of the fence not impossible to reach, you just have to hop a little. Perl can easily be made nicer and Python can surely with ease be made more flexible.