[Perl] What's the use of these two statement?

Shlomo Yona shlomo at cs.haifa.ac.il
Tue Sep 17 23:00:32 PDT 2002

On Wed, 18 Sep 2002, Qiang YiLiang wrote:

> I'm a beginner of the perl, I met 2 statements that I can't understand 
> as the following:
> use Getopt::Long;
> use File::Basename;
> What does it mean?

from the Getopt::Long perldoc:

       Getopt::Long - Extended processing of command line options

         use Getopt::Long;
         $result = GetOptions (...option-descriptions...);

       The Getopt::Long module implements an extended getopt
       function called GetOptions(). This function adheres to the
       POSIX syntax for command line options, with GNU exten­
       sions. In general, this means that options have long names
       instead of single letters, and are introduced with a dou­
       ble dash "--". Support for bundling of command line
       options, as was the case with the more traditional single-
       letter approach, is provided but not enabled by default.

from the File::Basename perldoc:

       fileparse - split a pathname into pieces

       basename - extract just the filename from a path

       dirname - extract just the directory from a path

           use File::Basename;

           ($name,$path,$suffix) = fileparse($fullname, at suffixlist)
           $basename = basename($fullname, at suffixlist);
           $dirname = dirname($fullname);

           ($name,$path,$suffix) = fileparse("lib/File/Basename.pm","\.pm");
           $basename = basename("lib/File/Basename.pm",".pm");
           $dirname = dirname("lib/File/Basename.pm");

       These routines allow you to parse file specifications into
       useful pieces using the syntax of different operating sys­

           You select the syntax via the routine

           If the argument passed to it contains one of the sub­
           strings "VMS", "MSDOS", "MacOS", "AmigaOS" or
           "MSWin32", the file specification syntax of that oper­
           ating system is used in future calls to fileparse(),
           basename(), and dirname().  If it contains none of
           these substrings, Unix syntax is used.  This pattern
           matching is case-insensitive.  If you've selected VMS
           syntax, and the file specification you pass to one of
           these routines contains a "/", they assume you are
           using Unix emulation and apply the Unix syntax rules
           instead, for that function call only.

           If the argument passed to it contains one of the sub­
           strings "VMS", "MSDOS", "MacOS", "AmigaOS", "os2",
           "MSWin32" or "RISCOS", then the pattern matching for
           suffix removal is performed without regard for case,
           since those systems are not case-sensitive when open­
           ing existing files (though some of them preserve case
           on file creation).

           If you haven't called fileparse_set_fstype(), the syn­
           tax is chosen by examining the builtin variable "$^O"
           according to these rules.

           The fileparse() routine divides a file specification
           into three parts: a leading path, a file name, and a
           suffix.  The path contains everything up to and
           including the last directory separator in the input
           file specification.  The remainder of the input file
           specification is then divided into name and suffix
           based on the optional patterns you specify in
           "@suffixlist".  Each element of this list is inter­
           preted as a regular expression, and is matched against
           the end of name.  If this succeeds, the matching por­
           tion of name is removed and prepended to suffix.  By
           proper use of "@suffixlist", you can remove file types
           or versions for examination.

           You are guaranteed that if you concatenate path, name,
           and suffix together in that order, the result will
           denote the same file as the input file specification.

the 'use' statement actually "includes" (more exactly, imports) the 
abilities of the module into your own program, thus allowing you to
use some of its variables, functions and objects.

you can read more about 'use' on the 'perldoc perlfunc' perldoc.

Shlomo Yona
shlomo at cs.haifa.ac.il

More information about the Perl mailing list