Perl5 リファレンス



       require VERSION

       require EXPR

       require Demands some semantics specified by EXPR, or by
               `$_' if EXPR is not supplied.

               If a VERSION is specified as a literal of the form
               v5.6.1, demands that the current version of Perl
               (`$^V' or $PERL_VERSION) be at least as recent as
               that version, at run time.  (For compatibility
               with older versions of Perl, a numeric argument
               will also be interpreted as VERSION.)  Compare
               with the use entry elsewhere in this document,
               which can do a similar check at compile time.

                   require v5.6.1;     # run time version check
                   require 5.6.1;      # ditto
                   require 5.005_03;   # float version allowed for compatibility

               Otherwise, demands that a library file be included
               if it hasn't already been included.  The file is
               included via the do-FILE mechanism, which is
               essentially just a variety of `eval'.  Has
               semantics similar to the following subroutine:

                   sub require {
                       my($filename) = @_;
                       return 1 if $INC{$filename};
                       my($realfilename,$result);
                       ITER: {
                           foreach $prefix (@INC) {
                               $realfilename = "$prefix/$filename";
                               if (-f $realfilename) {
                                   $INC{$filename} = $realfilename;
                                   $result = do $realfilename;
                                   last ITER;
                               }
                           }
                           die "Can't find $filename in \@INC";
                       }
                       delete $INC{$filename} if $@ || !$result;
                       die $@ if $@;
                       die "$filename did not return true value" unless $result;
                       return $result;
                   }

               Note that the file will not be included twice
               under the same specified name.  The file must
               return true as the last statement to indicate
               successful execution of any initialization code,
               so it's customary to end such a file with `1;'
               unless you're sure it'll return true otherwise.
               But it's better just to put the `1;', in case you
               add more statements.

               If EXPR is a bareword, the require assumes a ".pm"
               extension and replaces "::" with "/" in the
               filename for you, to make it easy to load standard
               modules.  This form of loading of modules does not
               risk altering your namespace.

               In other words, if you try this:

                       require Foo::Bar;    # a splendid bareword

               The require function will actually look for the
               "Foo/Bar.pm" file in the directories specified in
               the `@INC' array.

               But if you try this:

                       $class = 'Foo::Bar';
                       require $class;      # $class is not a bareword
                   #or
                       require "Foo::Bar";  # not a bareword because of the ""

               The require function will look for the "Foo::Bar"
               file in the @INC array and will complain about not
               finding "Foo::Bar" there.  In this case you can
               do:

                       eval "require $class";

               For a yet-more-powerful import facility, see the
               use entry elsewhere in this document and the
               perlmod manpage.


Perl5リファレンスに戻る