Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine
 
PerlMonks  

Re^2: The Limitations of the CPAN

by Anonymous Monk
on Nov 18, 2004 at 21:19 UTC ( #408891=note: print w/replies, xml ) Need Help??


in reply to Re: The Limitations of the CPAN
in thread The Limitations of the CPAN

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.

Replies are listed 'Best First'.
Re^3: The Limitations of the CPAN
by chromatic (Archbishop) on Nov 18, 2004 at 21:36 UTC

    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.

Re^3: The Limitations of the CPAN
by tall_man (Parson) on Nov 19, 2004 at 17:11 UTC
    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) self.name = myname end # more stuff using name or self.name 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?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (1)
As of 2019-08-21 01:03 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?