title: Perl: Testing whether Class Exists
body: <p>I have a class called Question, and a bunch of sub-classes depending on the type of question. I can create objects against the sub-classes, but I shouldn't be able to create an object of class <em>Question</em> itself:</p>
  
  <pre><code>#! /usr/bin/env perl
  
  use strict;
  use warnings;
  
  #
  # LOAD IN YOUR QUESTIONS HERE
  #
  
  my @list_of_questions;
  for my $question_type qw(Science Math English Dumb) {
      my $class = "Question::$question_type";
      my $question = $class-&gt;new;
      push @list_of_questions, $question;
  }
  
  package Question;
  use Carp;
  
  sub new {
      my $class = shift;
  
      my $self = {};
  
      if ( $class = eq "Question" ) {
         carp qq(Need to make object a sub-class of "Question");
         return;
      }
  
      bless $self, $class;
      return $self;
  }
  yadda, yadda, yadda...
  
  package Question::Math;
  use parent qw(Question);
  yadda, yadda, yadda...
  
  package Question::Science;
  use parent qw(Question);
  yadda, yadda, yadda...
  
  package Question::English;
  use parent qw(Question);
  yadda, yadda, yadda...
  </code></pre>
  
  <p>Notice these are not modules, but merely classes I've defined to be used in my program. Thus, I can't test module loading at runtime. </p>
  
  <p>When I run the above, I get:</p>
  
  <blockquote>
    <p><code>Can't locate object method "new" via package "Question::Dumb" (perhaps you forgot to load "Question::Dumb"?)</code></p>
  </blockquote>
  
  <p>Is there any way to catch for this particular error, so I can handle it myself? I know I could create an array of valid types, but I was hoping someway of being able to add new question type without having to remember to update my array.</p>