Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things

Comment on

( #3333=superdoc: print w/replies, xml ) Need Help??

Funny. I thought that I just said that Attribute::Property is an unacceptable solution to me. That means that it doesn't take away the issue.

I'm not disagreeing about that. You said that I indicated something; I cannot recall having indicated that exact thing, and tried to correct.

Let's not make a big deal out of everything. Feel offended if you wish, but please only do so knowing that I didn't mean "flawed" as an absolute condemnation and that no offense was intended. I like Perl for its tolerance towards almost all programming styles, but that doesn't mean I steer clear of discussion.

With OO I'd expect to be able to do something like create a Length module, Length objects can be accessed/set in various units (inches, meters, feet, miles, etc). An external user should have no idea what the internal representation is. How do I do it with lvalues?

In that rather specific case I would not use lvalues, or any setter method, for that matter. I'd be inclined to think of these values as immutable objects, and have something like:

package Length; sub new { my ($class, $value, $unit) = @_; # Create $self and store the value in standard form. # In case of length this means converting the length to meters. } sub as_km { shift->{_m} / 1000 } sub as_hm { shift->{_m} / 100 } sub as_dam { shift->{_m} / 10 } sub as_m { shift->{_m} } sub as_dm { shift->{_m} * 10 } sub as_cm { shift->{_m} * 100 } sub as_mm { shift->{_m} * 1000 } # Or, if this were really something I made, just: sub as { my ($self, $unit) = @_; # ... }
But instead of using Length objects, I am much more likely to dictate that every length must be stored in meters, as a number. Possibly with the addition of utility functions to aid in conversion.

And whichever I do, I'll feel free to dislike people who categorically declare that my considered set of choices are flawed.

I'm sorry you make this about people. I wonder, though, how you survive PM if you take offense every time someone disagrees with you on a technical subject. You are of course free to dislike me, or any person. Even though we will probably never meet in person, I regret that you dislike *me* instead of only what I said.

Juerd # { site => '', plp_site => '', do_not_use => 'spamtrap' }

In reply to Re^5: Use method/function signatures with Perl by Juerd
in thread Use method/function signatures with Perl by Ovid

Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":

  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.
  • Log In?

    What's my password?
    Create A New User
    and all is quiet...

    How do I use this? | Other CB clients
    Other Users?
    Others avoiding work at the Monastery: (1)
    As of 2018-01-20 00:25 GMT
    Find Nodes?
      Voting Booth?
      How did you see in the new year?

      Results (226 votes). Check out past polls.