Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw

Re: The Limitations of the CPAN

by tall_man (Parson)
on Nov 18, 2004 at 04:44 UTC ( #408692=note: print w/replies, xml ) Need Help??

in reply to The Limitations of the CPAN

I took a look at Ruby recently, but it had such serious flaws in my view that I dropped it like a hot potato. The main issue I described in The power of strict typo-checking. What was your experience with typo issues in Ruby?

Besides that, the scoping rules for local variables are horrible. (If you happen to use the same name as an outer scope, you clobber that variable? And they call that lexical scoping? I know some sort of fix is on the way, but still...)

Replies are listed 'Best First'.
Re^2: The Limitations of the CPAN
by Anonymous Monk on Nov 18, 2004 at 21:19 UTC
    Typo checking is actually better than Perl's IMHO, especially when checking module calls and such. For variables, i am very fond of attr_writer and attr_reader when I do need them, so there is no clobbering there. I never write foo.@bar = xyz as that's just bad style.

    As for local scoping clopping outer scoping, I have not yet run across this problem, but I have never needed to use a variable twice with the same name in the same scope other than with local scope versus instance scope, and in which case, that all works fine.

    I guess it depends on how you right your code, but the "Ruby Way" as it were does not run into problems like this, and it is not often a frequent complaint.

    I get a lot more runtime type problems with Perl, especially due to the tendancy to abuse hashes and use less object encapsulation. The code is also more fragile.

      Thus if you write Ruby well, you don't have many problems. Me too. If I write Perl well, I don't have many problems, either.

      I never write foo.@bar = xyz as that's just bad style

      Most Ruby objects I have seen fail to self-encapsulate their fields. For example, it would be unusual to see something like this:

      class MyObj attr_accessor :name private :name= def initialize(myname) = myname end # more stuff using name or instead of @name end
      Usually there would be raw references to "@name" all over the place. In perl, references to $self->{"name"} are typically considered bad style. If code inside and outside the class uses different means for accessing the fields, there is more danger of typos.

      But my main point was about the danger of declare-on-assignment, like this:

      axxx = 1 if (rare_condition_I_forgot_to_test) axx = 2 end print axxx,"\n"
      If "axx" was meant to be "axxx" there is no error message and the program does not always work as intended.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://408692]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others perusing the Monastery: (2)
As of 2021-05-16 03:33 GMT
Find Nodes?
    Voting Booth?
    Perl 7 will be out ...

    Results (151 votes). Check out past polls.