Hacker News new | ask | show | jobs
by ludicast 5633 days ago
I believe the Ruby community is very pro-Perl. I enjoyed Perl myself and Ruby seems to have a lot of the same soul to it.

I usually say Ruby is everything I loved about Perl with none of what I disliked/hated.

1 comments

I'm an old Perl hacker but do most of my work in Ruby these days -- and love it. I'll always have a soft spot for Perl, and will never forget how it helped build the Internet. But to me, Ruby makes Perl look like Java.
Can you explain the "makes perl look like java" comment? how does perl look like java?
I'm kind of kidding, but Ruby lets you do things more elegantly than you can in Perl, and with less verbosity (hence the Java comment). It's really a syntax issue that I'm talking about, but it matters a lot for readability and language usability.

Perl:

my $x = 'Apple Carrot Banana';

# sort them into an array

my @y = sort split(' ', $x);

# do we have more than 2 elements? (just a random test)

if (scalar(@y) > 2) {

  print "we've got ", scalar(@y), " elements!\n";
} else {

  print "insufficient elements. fail.\n";
}

Ruby:

x = 'Apple Carrot Banana'

y = x.split(' ').sort

if (y.size > 2)

  puts "we've got #{y.size} elements!"
else

  puts 'insufficient elements. fail.'
end

Ruby just seems more elegant to me, more programmer-friendly. YMMV.

A modern Perl programmer might write something much more elegant:

    my $x = 'Apple Carrot Banana';
    my @y = $x->split(' ')->sort;

    if (@y > 2) {
        say "we've got ${\@y->size} elements!";
    } else {
        say "insufficient elements. fail.";
    }
And one that doesn't like autobox would say:

    use 5.12.2; # enables modern features
    my $x = 'Apple Carrot Banana';
    my @y = sort split ' ', $x;

    say @y > 2 ? "we've got ${\scalar @y} elements!" 
               : 'insufficient elements. fail.';
Not everything needs to be an Object. Not every call needs to be a method call. Some people think better with procedures, some people think better with objects.

One of the reasons I personally like Perl is I can use which ever one is appropriate to the problem domain.

Edit: forgot the `sort` call.

Or ever-so-slightly lighter Perl 6 version:

    my $x = 'Apple Carrot Banana';
    my @y = $x.words.sort;

    if @y > 2 {
        say "we've got {@y.elems} elements!";
    } else {
        say "insufficient elements. fail.";
    }