I can't comment on 2), but as for 1) I would say no, definitely not.

When most people question the OO-ness of a supposedly OO language, usually it's because everything in the language is not an object. Alan Kay invented the term object-oriented to describe his language, Smalltalk, where everything is an object and all operations involve sending messages to objects.

Perl certainly doesn't fit Kay's definition, but even we use the more welcoming standard of the inheritince/encapsulation/polymorphism trio, I still think it doesn't pass, because Perl has no real object inheritance. Yes, you can inherit the methods from another class, but not objects. This results in cruft like this:

sub new { ... my $self = $class->SUPER::new; $self->{host} = shift; $self->{port} = shift; ... }

which clearly violates the law of encapsulation--as well as the law of abstraction--because you have to know the internals of the class you wish to inherit from, and then you go right on in and mess with it directly.


In reply to Re: Is Perl Truly an Object Oriented Language? by William G. Davis
in thread Is Perl Truly an Object Oriented Language? by awohld

Title:
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, details, 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, summary, 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.