home *** CD-ROM | disk | FTP | other *** search
/ Chip 2000 May / Chip_2000-05_cd1.bin / zkuste / Perl / ActivePerl-5.6.0.613.msi / 䆊䌷䈹䈙䏵-䞅䞆䞀㡆䞃䄦䠥 / _ebe3eb30da605476c52334253ad4a439 < prev    next >
Text File  |  2000-03-23  |  7KB  |  172 lines

  1.  
  2. <HTML>
  3. <HEAD>
  4. <TITLE>ExtUtils::Packlist - manage .packlist files</TITLE>
  5. <LINK REL="stylesheet" HREF="../../Active.css" TYPE="text/css">
  6. <LINK REV="made" HREF="mailto:">
  7. </HEAD>
  8.  
  9. <BODY>
  10. <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=100%>
  11. <TR><TD CLASS=block VALIGN=MIDDLE WIDTH=100% BGCOLOR="#cccccc">
  12. <STRONG><P CLASS=block> ExtUtils::Packlist - manage .packlist files</P></STRONG>
  13. </TD></TR>
  14. </TABLE>
  15.  
  16. <A NAME="__index__"></A>
  17. <!-- INDEX BEGIN -->
  18.  
  19. <UL>
  20.  
  21.     <LI><A HREF="#name">NAME</A></LI><LI><A HREF="#supportedplatforms">SUPPORTED PLATFORMS</A></LI>
  22.  
  23.     <LI><A HREF="#synopsis">SYNOPSIS</A></LI>
  24.     <LI><A HREF="#description">DESCRIPTION</A></LI>
  25.     <LI><A HREF="#usage">USAGE</A></LI>
  26.     <LI><A HREF="#functions">FUNCTIONS</A></LI>
  27.     <LI><A HREF="#example">EXAMPLE</A></LI>
  28.     <LI><A HREF="#author">AUTHOR</A></LI>
  29. </UL>
  30. <!-- INDEX END -->
  31.  
  32. <HR>
  33. <P>
  34. <H1><A NAME="name">NAME</A></H1>
  35. <P>ExtUtils::Packlist - manage .packlist files</P>
  36. <P>
  37. <HR>
  38. <H1><A NAME="supportedplatforms">SUPPORTED PLATFORMS</A></H1>
  39. <UL>
  40. <LI>Linux</LI>
  41. <LI>Solaris</LI>
  42. <LI>Windows</LI>
  43. </UL>
  44. <HR>
  45. <H1><A NAME="synopsis">SYNOPSIS</A></H1>
  46. <PRE>
  47.    use ExtUtils::Packlist;
  48.    my ($pl) = ExtUtils::Packlist->new('.packlist');
  49.    $pl->read('/an/old/.packlist');
  50.    my @missing_files = $pl->validate();
  51.    $pl->write('/a/new/.packlist');</PRE>
  52. <PRE>
  53.    $pl->{'/some/file/name'}++;
  54.       or
  55.    $pl->{'/some/other/file/name'} = { type => 'file',
  56.                                       from => '/some/file' };</PRE>
  57. <P>
  58. <HR>
  59. <H1><A NAME="description">DESCRIPTION</A></H1>
  60. <P>ExtUtils::Packlist provides a standard way to manage .packlist files.
  61. Functions are provided to read and write .packlist files.  The original
  62. .packlist format is a simple list of absolute pathnames, one per line.  In
  63. addition, this package supports an extended format, where as well as a filename
  64. each line may contain a list of attributes in the form of a space separated
  65. list of key=value pairs.  This is used by the installperl script to
  66. differentiate between files and links, for example.</P>
  67. <P>
  68. <HR>
  69. <H1><A NAME="usage">USAGE</A></H1>
  70. <P>The hash reference returned by the <A HREF="#item_new"><CODE>new()</CODE></A> function can be used to examine and
  71. modify the contents of the .packlist.  Items may be added/deleted from the
  72. .packlist by modifying the hash.  If the value associated with a hash key is a
  73. scalar, the entry written to the .packlist by any subsequent <A HREF="#item_write"><CODE>write()</CODE></A> will be a
  74. simple filename.  If the value is a hash, the entry written will be the
  75. filename followed by the key=value pairs from the hash.  Reading back the
  76. .packlist will recreate the original entries.</P>
  77. <P>
  78. <HR>
  79. <H1><A NAME="functions">FUNCTIONS</A></H1>
  80. <DL>
  81. <DT><STRONG><A NAME="item_new"><CODE>new()</CODE></A></STRONG><BR>
  82. <DD>
  83. This takes an optional parameter, the name of a .packlist.  If the file exists,
  84. it will be opened and the contents of the file will be read.  The <A HREF="#item_new"><CODE>new()</CODE></A> method
  85. returns a reference to a hash.  This hash holds an entry for each line in the
  86. .packlist.  In the case of old-style .packlists, the value associated with each
  87. key is undef.  In the case of new-style .packlists, the value associated with
  88. each key is a hash containing the key=value pairs following the filename in the
  89. .packlist.
  90. <P></P>
  91. <DT><STRONG><A NAME="item_read"><CODE>read()</CODE></A></STRONG><BR>
  92. <DD>
  93. This takes an optional parameter, the name of the .packlist to be read.  If
  94. no file is specified, the .packlist specified to <A HREF="#item_new"><CODE>new()</CODE></A> will be read.  If the
  95. .packlist does not exist, Carp::croak will be called.
  96. <P></P>
  97. <DT><STRONG><A NAME="item_write"><CODE>write()</CODE></A></STRONG><BR>
  98. <DD>
  99. This takes an optional parameter, the name of the .packlist to be written.  If
  100. no file is specified, the .packlist specified to <A HREF="#item_new"><CODE>new()</CODE></A> will be overwritten.
  101. <P></P>
  102. <DT><STRONG><A NAME="item_validate"><CODE>validate()</CODE></A></STRONG><BR>
  103. <DD>
  104. This checks that every file listed in the .packlist actually exists.  If an
  105. argument which evaluates to true is given, any missing files will be removed
  106. from the internal hash.  The return value is a list of the missing files, which
  107. will be empty if they all exist.
  108. <P></P>
  109. <DT><STRONG><A NAME="item_packlist_file"><CODE>packlist_file()</CODE></A></STRONG><BR>
  110. <DD>
  111. This returns the name of the associated .packlist file
  112. <P></P></DL>
  113. <P>
  114. <HR>
  115. <H1><A NAME="example">EXAMPLE</A></H1>
  116. <P>Here's <CODE>modrm</CODE>, a little utility to cleanly remove an installed module.</P>
  117. <PRE>
  118.     #!/usr/local/bin/perl -w</PRE>
  119. <PRE>
  120.     use strict;
  121.     use IO::Dir;
  122.     use ExtUtils::Packlist;
  123.     use ExtUtils::Installed;</PRE>
  124. <PRE>
  125.     sub emptydir($) {
  126.         my ($dir) = @_;
  127.         my $dh = IO::Dir->new($dir) || return(0);
  128.         my @count = $dh->read();
  129.         $dh->close();
  130.         return(@count == 2 ? 1 : 0);
  131.     }</PRE>
  132. <PRE>
  133.     # Find all the installed packages
  134.     print("Finding all installed modules...\n");
  135.     my $installed = ExtUtils::Installed->new();</PRE>
  136. <PRE>
  137.     foreach my $module (grep(!/^Perl$/, $installed->modules())) {
  138.        my $version = $installed->version($module) || "???";
  139.        print("Found module $module Version $version\n");
  140.        print("Do you want to delete $module? [n] ");
  141.        my $r = <STDIN>; chomp($r);
  142.        if ($r && $r =~ /^y/i) {
  143.           # Remove all the files
  144.           foreach my $file (sort($installed->files($module))) {
  145.              print("rm $file\n");
  146.              unlink($file);
  147.           }
  148.           my $pf = $installed->packlist($module)->packlist_file();
  149.           print("rm $pf\n");
  150.           unlink($pf);
  151.           foreach my $dir (sort($installed->directory_tree($module))) {
  152.              if (emptydir($dir)) {
  153.                 print("rmdir $dir\n");
  154.                 rmdir($dir);
  155.              }
  156.           }
  157.        }
  158.     }</PRE>
  159. <P>
  160. <HR>
  161. <H1><A NAME="author">AUTHOR</A></H1>
  162. <P>Alan Burlison <<A HREF="mailto:Alan.Burlison@uk.sun.com">Alan.Burlison@uk.sun.com</A>></P>
  163. <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=100%>
  164. <TR><TD CLASS=block VALIGN=MIDDLE WIDTH=100% BGCOLOR="#cccccc">
  165. <STRONG><P CLASS=block> ExtUtils::Packlist - manage .packlist files</P></STRONG>
  166. </TD></TR>
  167. </TABLE>
  168.  
  169. </BODY>
  170.  
  171. </HTML>
  172.