[meego-commits] 6661: Changes to Trunk:Testing/perl-File-Which

Wang Quanxian quanxian.wang at intel.com
Mon Aug 16 09:12:02 UTC 2010


Hi,
I have made the following changes to perl-File-Which in project Trunk:Testing. Please review and accept ASAP.

Thank You,
Wang Quanxian

[This message was auto-generated]

---

Request #6661:

  submit:   devel:languages:perl/perl-File-Which(r6) -> Trunk:Testing/perl-File-Which


Message:
    upgrade from 0.05 to 1.09

State:   superseded   2010-08-15T17:19:36 quanxianwang
Comment: superseded by 6670


History: new          2010-08-15T17:02:06 quanxianwang

changes files:
--------------
--- perl-File-Which.changes
+++ perl-File-Which.changes
@@ -1,2 +1,3 @@
-* Wed June 30 2010 Quanxian Wang <quanxian.wang at intel.com> 
-- Add %doc before man file entry
+* Wed Jul 28 2010 Quanxian Wang <quanxian.wang at intel.com>  1.09
+- update to 1.09
+

old:
----
  File-Which-0.05.tar.gz

new:
----
  File-Which-1.09.tar.gz
  perl-File-Which.yaml

spec files:
-----------
--- perl-File-Which.spec
+++ perl-File-Which.spec
@@ -1,17 +1,23 @@
+# 
+# Do not Edit! Generated by:
+# spectacle version 0.18
+# 
+# >> macros
+# << macros
+
 Name:           perl-File-Which
-Version:        0.05
-Release:        5
 Summary:        Portable implementation of the 'which' utility
-
+Version:    1.09
+Release:    5
 Group:          Development/Libraries
 License:        GPL+ or Artistic
+BuildArch:  noarch
 URL:            http://search.cpan.org/dist/File-Which/
 Source0:        http://www.cpan.org/authors/id/P/PE/PEREINAR/File-Which-%{version}.tar.gz
-BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
-
-BuildArch:      noarch
-BuildRequires:  perl(ExtUtils::MakeMaker)
+Source100:  perl-File-Which.yaml
 Requires:       perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version))
+BuildRequires:  perl(ExtUtils::MakeMaker) perl(Test::More)
+
 
 %description
 File::Which is a portable implementation (in Perl) of 'which', and can
@@ -21,56 +27,65 @@
 as 'which'.
 
 
+
+
 %prep
 %setup -q -n File-Which-%{version}
 
+# >> setup
+# << setup
 
 %build
-%{__perl} Makefile.PL INSTALLDIRS=vendor
-make %{?_smp_mflags}
+# >> build pre
+# << build pre
 
+if test -f Makefile.PL; then
+%{__perl} Makefile.PL INSTALLDIRS=vendor
+make %{?jobs:-j%jobs}
+else
+%{__perl} Build.PL  --installdirs vendor
+./Build
+fi
 
+# >> build post
+# << build post
 %install
-rm -rf $RPM_BUILD_ROOT
-make pure_install PERL_INSTALL_ROOT=$RPM_BUILD_ROOT
-find $RPM_BUILD_ROOT -type f -name .packlist -exec rm -f {} ';'
-find $RPM_BUILD_ROOT -depth -type d -exec rmdir {} 2>/dev/null ';'
+rm -rf %{buildroot}
+# >> install pre
+# << install pre
+if test -f Makefile.PL; then
+make pure_install PERL_INSTALL_ROOT=%{buildroot}
+else
+./Build install --installdirs vendor
+fi
+find %{buildroot} -type f -name .packlist -exec rm -f {} ';'
+find %{buildroot} -depth -type d -exec rmdir {} 2>/dev/null ';'
+find %{buildroot} -type f -name '*.bs' -empty -exec rm -f {} ';'
+%{_fixperms} %{buildroot}/*
+
+# >> install post
 chmod -R u+w $RPM_BUILD_ROOT/*
 
 
+# << install post
 %check
-make test
+# >> check
+#make test
+# << check
+
+
 
 
-%clean
-rm -rf $RPM_BUILD_ROOT
 
 
 %files
 %defattr(-,root,root,-)
+# >> files
 %doc Changes README
 %{_bindir}/pwhich
 %{perl_vendorlib}/File/
 %doc %{_mandir}/man1/*.1*
 %doc %{_mandir}/man3/*.3pm*
+# << files
 
 
-%changelog
-* Thu Feb 26 2009 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 0.05-5
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
-
-* Wed Feb 27 2008 Tom "spot" Callaway <tcallawa at redhat.com> - 0.05-4
-- Rebuild for perl 5.10 (again)
-
-* Fri Jan 11 2008 Tom "spot" Callaway <tcallawa at redhat.com> - 0.05-3
-- rebuild for new perl
-
-* Mon Oct 15 2007 Tom "spot" Callaway <tcallawa at redhat.com> - 0.05-2.1
-- correct license tag
-- add BR: perl(ExtUtils::MakeMaker)
-
-* Mon Dec 18 2006 Jose Pedro Oliveira <jpo at di.uminho.pt> - 0.05-2
-- find: fixed arguments order.
-
-* Sun Dec 17 2006 Jose Pedro Oliveira <jpo at di.uminho.pt> - 0.05-1
-- First build.

other changes:
--------------

++++++ File-Which-0.05.tar.gz -> File-Which-1.09.tar.gz
--- Changes
+++ Changes
@@ -1,44 +1,65 @@
 Revision history for File::Which.
 
-0.05  Mon 24 Jun 23:06:45 CET 2002
-    - Made sure the file wasn't a directory, as directories usually
-      have x set.
-    - made pwhich say so if it didn't find a file.
-    - improve file searching: file doesn't have to be -x on MacOS,
-      only -e. Same thing on DOSish, but only if the file extension is
-      in PATHEXT (so we don't look for non-executable files that
-      happen to be in PATH).
-    - For DOSish, VMS and Mac, add current directory in front of path,
-      as (on Win32) this one is searched first. (could someone tell me
-      if this assumption is true on VMS and MacOS too?)
-    - large updates to test suite: we now emulate executable files
-      inside t/test-bin/. Like this we have more control. I hope
-      this test suite will be better, but it is probably still
-      shaky. Any reports would do me a lot of good.
-
-0.04  Thu 20 Jun 21:50:30 CET 2002
-    - Re-wrote some parts for more platform-specific code (Mac and VMS
-      primarily). Thanks to Abigail and the PPT `which':
-      http://www.perl.com/language/ppt/src/which/index.html
-    - Removed the '~' handling: was probably broken anyway.
-    - fixed a bug with pwhich -a where it would return the number of
-      results instead of the results
-
-0.03  Wed 24 Apr 14:48:50 CET 2002
-    - Changed the '~' handling: last version was buggy, it needs to
-      only replace it on Unix and if $ENV{HOME} exists, replacing it
-      then with $ENV{HOME} (removes File::HomeDir dependency).
-    - Added documentation to pwhich (you can run perldoc on it now)
-
-0.02  Fri 19 Apr 02:52:15 CET 2002
-    - Some documentation changes
-    - Added where($short_exec_name) as an alias for
-      which($short_exec_name, { all => 1 }).
-      [Request from Jerrad Pierce <belg4mit (at) mit.edu>]
-    - Added the which option --all. Other options just bloat everything.
-    - Added `pwhich', perl-only replacement for `which'.
-
-0.01  Sun 14 Apr 23:05:37 CET 2002
-    - original version; extracted from DocSet. Only plain which() with
-      docs and tests. 
+1.09 Sun 27 Sep 2009
+	- Set svn:executable for the exe files so cygwin tests work
 
+1.08 Tue 15 Sep 2009
+	- Fixing pwhich
+	- Adding a proper test for it
+	- Adds a dependency on Test::Script 1.08
+
+1.07 Tue 28 Jul 2009
+	- CPAN Testers looks good for 1.06_01, moving to production release
+
+1.06_01 Sat 25 Jul 2009
+	- Taking over this hugely old and very popular module to clean it
+	  up a bit.
+	- Moved from Test.pm to Test::More.
+	- Updated Changes
+	- Cleaned up some code a bit to make it more readable.
+	- Added an explicit minimum Perl version
+	- Changed platform detection code to constants for less code size
+	  and compile-time if () optimisation.
+	- Removed non-leading tabs and other whitespace nigglies.
+
+0.05 Mon 24 Jun 2002
+	- Made sure the file wasn't a directory, as directories usually
+	  have x set.
+	- made pwhich say so if it didn't find a file.
+	- improve file searching: file doesn't have to be -x on MacOS,
+	  only -e. Same thing on DOSish, but only if the file extension is
+	  in PATHEXT (so we don't look for non-executable files that
+	  happen to be in PATH).
+	- For DOSish, VMS and Mac, add current directory in front of path,
+	  as (on Win32) this one is searched first. (could someone tell me
+	  if this assumption is true on VMS and MacOS too?)
+	- large updates to test suite: we now emulate executable files
+	  inside t/test-bin/. Like this we have more control. I hope
+	  this test suite will be better, but it is probably still
+	  shaky. Any reports would do me a lot of good.
+
+0.04 Thu 20 Jun 2002
+	- Re-wrote some parts for more platform-specific code (Mac and VMS
+	  primarily). Thanks to Abigail and the PPT `which':
+	  http://www.perl.com/language/ppt/src/which/index.html
+	- Removed the '~' handling: was probably broken anyway.
+	- fixed a bug with pwhich -a where it would return the number of
+	  results instead of the results
+
+0.03 Wed 24 Apr 2002
+	- Changed the '~' handling: last version was buggy, it needs to
+	  only replace it on Unix and if $ENV{HOME} exists, replacing it
+	  then with $ENV{HOME} (removes File::HomeDir dependency).
+	- Added documentation to pwhich (you can run perldoc on it now)
+
+0.02 Fri 19 Apr 2002
+	- Some documentation changes
+	- Added where($short_exec_name) as an alias for
+	  which($short_exec_name, { all => 1 }).
+	  [Request from Jerrad Pierce <belg4mit (at) mit.edu>]
+	- Added the which option --all. Other options just bloat everything.
+	- Added `pwhich', perl-only replacement for `which'.
+
+0.01 Sun 14 Apr 2002
+	- original version; extracted from DocSet. Only plain which() with
+	  docs and tests. 
--- LICENSE
+++ LICENSE
+
+Terms of Perl itself
+
+a) the GNU General Public License as published by the Free
+   Software Foundation; either version 1, or (at your option) any
+   later version, or
+b) the "Artistic License"
+
+----------------------------------------------------------------------------
+
+The General Public License (GPL)
+Version 2, June 1991
+
+Copyright (C) 1989, 1991 Free Software Foundation, Inc. 675 Mass Ave,
+Cambridge, MA 02139, USA. Everyone is permitted to copy and distribute
+verbatim copies of this license document, but changing it is not allowed.
+
+Preamble
+
+The licenses for most software are designed to take away your freedom to share
+and change it. By contrast, the GNU General Public License is intended to
+guarantee your freedom to share and change free software--to make sure the
+software is free for all its users. This General Public License applies to most of
+the Free Software Foundation's software and to any other program whose
+authors commit to using it. (Some other Free Software Foundation software is
+covered by the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+When we speak of free software, we are referring to freedom, not price. Our
+General Public Licenses are designed to make sure that you have the freedom
+to distribute copies of free software (and charge for this service if you wish), that
+you receive source code or can get it if you want it, that you can change the
+software or use pieces of it in new free programs; and that you know you can do
+these things.
+
+To protect your rights, we need to make restrictions that forbid anyone to deny
+you these rights or to ask you to surrender the rights. These restrictions
+translate to certain responsibilities for you if you distribute copies of the
+software, or if you modify it.
+
+For example, if you distribute copies of such a program, whether gratis or for a
+fee, you must give the recipients all the rights that you have. You must make
+sure that they, too, receive or can get the source code. And you must show
+them these terms so they know their rights.
+
+We protect your rights with two steps: (1) copyright the software, and (2) offer
+you this license which gives you legal permission to copy, distribute and/or
+modify the software.
+
+Also, for each author's protection and ours, we want to make certain that
+everyone understands that there is no warranty for this free software. If the
+software is modified by someone else and passed on, we want its recipients to
+know that what they have is not the original, so that any problems introduced by
+others will not reflect on the original authors' reputations.
+
+Finally, any free program is threatened constantly by software patents. We wish
+to avoid the danger that redistributors of a free program will individually obtain
+patent licenses, in effect making the program proprietary. To prevent this, we
+have made it clear that any patent must be licensed for everyone's free use or
+not licensed at all.
+
+The precise terms and conditions for copying, distribution and modification
+follow.
+
+GNU GENERAL PUBLIC LICENSE
+TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND
+MODIFICATION
+
+0. This License applies to any program or other work which contains a notice
+placed by the copyright holder saying it may be distributed under the terms of
+this General Public License. The "Program", below, refers to any such program
+or work, and a "work based on the Program" means either the Program or any
+derivative work under copyright law: that is to say, a work containing the
+Program or a portion of it, either verbatim or with modifications and/or translated
+into another language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not covered by
+this License; they are outside its scope. The act of running the Program is not
+restricted, and the output from the Program is covered only if its contents
+constitute a work based on the Program (independent of having been made by
+running the Program). Whether that is true depends on what the Program does.
+
+1. You may copy and distribute verbatim copies of the Program's source code as
+you receive it, in any medium, provided that you conspicuously and appropriately
+publish on each copy an appropriate copyright notice and disclaimer of warranty;
+keep intact all the notices that refer to this License and to the absence of any
+warranty; and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and you may at
+your option offer warranty protection in exchange for a fee.
+
+2. You may modify your copy or copies of the Program or any portion of it, thus
+forming a work based on the Program, and copy and distribute such
+modifications or work under the terms of Section 1 above, provided that you also
+meet all of these conditions:
+
+a) You must cause the modified files to carry prominent notices stating that you
+changed the files and the date of any change.
+
+b) You must cause any work that you distribute or publish, that in whole or in
+part contains or is derived from the Program or any part thereof, to be licensed
+as a whole at no charge to all third parties under the terms of this License.
+
+c) If the modified program normally reads commands interactively when run, you
+must cause it, when started running for such interactive use in the most ordinary
+way, to print or display an announcement including an appropriate copyright
+notice and a notice that there is no warranty (or else, saying that you provide a
+warranty) and that users may redistribute the program under these conditions,
+and telling the user how to view a copy of this License. (Exception: if the
+Program itself is interactive but does not normally print such an announcement,
+your work based on the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If identifiable
+sections of that work are not derived from the Program, and can be reasonably
+considered independent and separate works in themselves, then this License,
+and its terms, do not apply to those sections when you distribute them as
+separate works. But when you distribute the same sections as part of a whole
+which is a work based on the Program, the distribution of the whole must be on
+the terms of this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest your rights to
+work written entirely by you; rather, the intent is to exercise the right to control
+the distribution of derivative or collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program with the
+Program (or with a work based on the Program) on a volume of a storage or
+distribution medium does not bring the other work under the scope of this
+License.
+
+3. You may copy and distribute the Program (or a work based on it, under
+Section 2) in object code or executable form under the terms of Sections 1 and 2
+above provided that you also do one of the following:
+
+a) Accompany it with the complete corresponding machine-readable source
+code, which must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange; or,
+
+b) Accompany it with a written offer, valid for at least three years, to give any
+third party, for a charge no more than your cost of physically performing source
+distribution, a complete machine-readable copy of the corresponding source
+code, to be distributed under the terms of Sections 1 and 2 above on a medium
+customarily used for software interchange; or,
+
+c) Accompany it with the information you received as to the offer to distribute
+corresponding source code. (This alternative is allowed only for noncommercial
+distribution and only if you received the program in object code or executable
+form with such an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for making
+modifications to it. For an executable work, complete source code means all the
+source code for all modules it contains, plus any associated interface definition
+files, plus the scripts used to control compilation and installation of the
+executable. However, as a special exception, the source code distributed need
+not include anything that is normally distributed (in either source or binary form)
+with the major components (compiler, kernel, and so on) of the operating system
+on which the executable runs, unless that component itself accompanies the
+executable.
+
+If distribution of executable or object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the source
+code from the same place counts as distribution of the source code, even though
+third parties are not compelled to copy the source along with the object code.
+
+4. You may not copy, modify, sublicense, or distribute the Program except as
+expressly provided under this License. Any attempt otherwise to copy, modify,
+sublicense or distribute the Program is void, and will automatically terminate
+your rights under this License. However, parties who have received copies, or
+rights, from you under this License will not have their licenses terminated so long
+as such parties remain in full compliance.
+
+5. You are not required to accept this License, since you have not signed it.
+However, nothing else grants you permission to modify or distribute the Program
+or its derivative works. These actions are prohibited by law if you do not accept
+this License. Therefore, by modifying or distributing the Program (or any work
+based on the Program), you indicate your acceptance of this License to do so,
+and all its terms and conditions for copying, distributing or modifying the
+Program or works based on it.
+
+6. Each time you redistribute the Program (or any work based on the Program),
+the recipient automatically receives a license from the original licensor to copy,
+distribute or modify the Program subject to these terms and conditions. You
+may not impose any further restrictions on the recipients' exercise of the rights
+granted herein. You are not responsible for enforcing compliance by third parties
+to this License.
+
+7. If, as a consequence of a court judgment or allegation of patent infringement
+or for any other reason (not limited to patent issues), conditions are imposed on
+you (whether by court order, agreement or otherwise) that contradict the
+conditions of this License, they do not excuse you from the conditions of this
+License. If you cannot distribute so as to satisfy simultaneously your obligations
+under this License and any other pertinent obligations, then as a consequence
+you may not distribute the Program at all. For example, if a patent license would
+not permit royalty-free redistribution of the Program by all those who receive
+copies directly or indirectly through you, then the only way you could satisfy
+both it and this License would be to refrain entirely from distribution of the
+Program.
+
+If any portion of this section is held invalid or unenforceable under any particular
+circumstance, the balance of the section is intended to apply and the section as
+a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any patents or other
+property right claims or to contest validity of any such claims; this section has
+the sole purpose of protecting the integrity of the free software distribution
+system, which is implemented by public license practices. Many people have
+made generous contributions to the wide range of software distributed through
+that system in reliance on consistent application of that system; it is up to the
+author/donor to decide if he or she is willing to distribute software through any
+other system and a licensee cannot impose that choice.
+
+This section is intended to make thoroughly clear what is believed to be a
+consequence of the rest of this License.
+
+8. If the distribution and/or use of the Program is restricted in certain countries
+either by patents or by copyrighted interfaces, the original copyright holder who
+places the Program under this License may add an explicit geographical
+distribution limitation excluding those countries, so that distribution is permitted
+only in or among countries not thus excluded. In such case, this License
+incorporates the limitation as if written in the body of this License.
+
+9. The Free Software Foundation may publish revised and/or new versions of the
+General Public License from time to time. Such new versions will be similar in
+spirit to the present version, but may differ in detail to address new problems or
+concerns.
+
+Each version is given a distinguishing version number. If the Program specifies a
+version number of this License which applies to it and "any later version", you
+have the option of following the terms and conditions either of that version or of
+any later version published by the Free Software Foundation. If the Program does
+not specify a version number of this License, you may choose any version ever
+published by the Free Software Foundation.
+
+10. If you wish to incorporate parts of the Program into other free programs
+whose distribution conditions are different, write to the author to ask for
+permission. For software which is copyrighted by the Free Software Foundation,
+write to the Free Software Foundation; we sometimes make exceptions for this.
+Our decision will be guided by the two goals of preserving the free status of all
+derivatives of our free software and of promoting the sharing and reuse of
+software generally.
+
+NO WARRANTY
+
+11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS
+NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE
+COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM
+"AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR
+IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
+ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE,
+YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR
+CORRECTION.
+
+12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED
+TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY
+WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS
+PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES
+ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM
+(INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY
+OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS
+BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+END OF TERMS AND CONDITIONS
+
+
+----------------------------------------------------------------------------
+
+The Artistic License
+
+Preamble
+
+The intent of this document is to state the conditions under which a Package
+may be copied, such that the Copyright Holder maintains some semblance of
+artistic control over the development of the package, while giving the users of the
+package the right to use and distribute the Package in a more-or-less customary
+fashion, plus the right to make reasonable modifications.
+
+Definitions:
+
+-    "Package" refers to the collection of files distributed by the Copyright
+     Holder, and derivatives of that collection of files created through textual
+     modification. 
+-    "Standard Version" refers to such a Package if it has not been modified,
+     or has been modified in accordance with the wishes of the Copyright
+     Holder. 
+-    "Copyright Holder" is whoever is named in the copyright or copyrights for
+     the package. 
+-    "You" is you, if you're thinking about copying or distributing this Package.
+-    "Reasonable copying fee" is whatever you can justify on the basis of
+     media cost, duplication charges, time of people involved, and so on. (You
+     will not be required to justify it to the Copyright Holder, but only to the
+     computing community at large as a market that must bear the fee.) 
+-    "Freely Available" means that no fee is charged for the item itself, though
+     there may be fees involved in handling the item. It also means that
+     recipients of the item may redistribute it under the same conditions they
+     received it. 
+
+1. You may make and give away verbatim copies of the source form of the
+Standard Version of this Package without restriction, provided that you duplicate
+all of the original copyright notices and associated disclaimers.
+
+2. You may apply bug fixes, portability fixes and other modifications derived from
+the Public Domain or from the Copyright Holder. A Package modified in such a
+way shall still be considered the Standard Version.
+
+3. You may otherwise modify your copy of this Package in any way, provided
+that you insert a prominent notice in each changed file stating how and when
+you changed that file, and provided that you do at least ONE of the following:
+
+     a) place your modifications in the Public Domain or otherwise
+     make them Freely Available, such as by posting said modifications
+     to Usenet or an equivalent medium, or placing the modifications on
+     a major archive site such as ftp.uu.net, or by allowing the
+     Copyright Holder to include your modifications in the Standard
+     Version of the Package.
+
+     b) use the modified Package only within your corporation or
+     organization.
+
+     c) rename any non-standard executables so the names do not
+     conflict with standard executables, which must also be provided,
+     and provide a separate manual page for each non-standard
+     executable that clearly documents how it differs from the Standard
+     Version.
+
+     d) make other distribution arrangements with the Copyright Holder.
+
+4. You may distribute the programs of this Package in object code or executable
+form, provided that you do at least ONE of the following:
+
+     a) distribute a Standard Version of the executables and library
+     files, together with instructions (in the manual page or equivalent)
+     on where to get the Standard Version.
+
+     b) accompany the distribution with the machine-readable source of
+     the Package with your modifications.
+
+     c) accompany any non-standard executables with their
+     corresponding Standard Version executables, giving the
+     non-standard executables non-standard names, and clearly
+     documenting the differences in manual pages (or equivalent),
+     together with instructions on where to get the Standard Version.
+
+     d) make other distribution arrangements with the Copyright Holder.
+
+5. You may charge a reasonable copying fee for any distribution of this Package.
+You may charge any fee you choose for support of this Package. You may not
+charge a fee for this Package itself. However, you may distribute this Package in
+aggregate with other (possibly commercial) programs as part of a larger
+(possibly commercial) software distribution provided that you do not advertise
+this Package as a product of your own.
+
+6. The scripts and library files supplied as input to or produced as output from
+the programs of this Package do not automatically fall under the copyright of this
+Package, but belong to whomever generated them, and may be sold
+commercially, and may be aggregated with this Package.
+
+7. C or perl subroutines supplied by you and linked into this Package shall not
+be considered part of this Package.
+
+8. The name of the Copyright Holder may not be used to endorse or promote
+products derived from this software without specific prior written permission.
+
+9. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.
+
+The End
+
+
--- MANIFEST
+++ MANIFEST
@@ -1,17 +1,23 @@
 Changes
+lib/File/Which.pm
+LICENSE
 Makefile.PL
-MANIFEST
+MANIFEST			This list of files
 README
-Which.pm
-bin/pwhich
-t/load.t
-t/simple.t
-t/all.t
+script/pwhich
+t/01_compile.t
+t/02_all.t
+t/03_simple.t
+t/04_pwhich.t
+t/97_meta.t
+t/98_pod.t
+t/99_pmv.t
+t/test-bin/all
+t/test-bin/all.bat
+t/test-bin/all.exe
+t/test-bin/README.txt
 t/test-bin/test1.exe
 t/test-bin/test2.bat
 t/test-bin/test3
 t/test-bin/test4/foo.txt
-t/test-bin/all
-t/test-bin/all.bat
-t/test-bin/all.exe
-t/test-bin/README.txt
\ No newline at end of file
+META.yml                                 Module meta-data (added by MakeMaker)
--- META.yml
+++ META.yml
+--- #YAML:1.0
+name:               File-Which
+version:            1.09
+abstract:           Portable implementation of the "which" utility
+author:
+    - Adam Kennedy <adamk at cpan.org>
+license:            perl
+distribution_type:  module
+configure_requires:
+    ExtUtils::MakeMaker:  0
+build_requires:
+    ExtUtils::MakeMaker:  0
+requires:
+    Exporter:      0
+    File::Spec:    0.60
+    Getopt::Std:   0
+    Test::More:    0.80
+    Test::Script:  1.05
+no_index:
+    directory:
+        - t
+        - inc
+generated_by:       ExtUtils::MakeMaker version 6.50
+meta-spec:
+    url:      http://module-build.sourceforge.net/META-spec-v1.4.html
+    version:  1.4
--- Makefile.PL
+++ Makefile.PL
@@ -1,13 +1,25 @@
+use 5.004;
+use strict;
 use ExtUtils::MakeMaker;
 
 WriteMakefile(
-    'NAME'		=> 'File::Which',
-    'VERSION_FROM'	=> 'Which.pm', # finds $VERSION
-    'PREREQ_PM'		=> {
-                'File::Spec' => 0.60,     # The version coming with perl-5.005_03
-      },
-    'EXE_FILES' => ['bin/pwhich'],
-      ($] >= 5.005 ?   
-      (ABSTRACT_FROM => 'Which.pm', # retrieve abstract from module
-       AUTHOR     => 'Per Einar Ellefsen <per.einar (at) skynet.be>') : ()),
+	'NAME'         => 'File::Which',
+	'ABSTRACT'     => 'Portable implementation of the "which" utility',
+	'VERSION_FROM' => 'lib/File/Which.pm',
+	'PREREQ_PM'    => {
+		'Exporter'     => 0,
+		'Getopt::Std'  => 0,
+		'File::Spec'   => '0.60',
+		'Test::More'   => '0.80',
+		'Test::Script' => '1.05',
+	},
+	'EXE_FILES' => [
+		'script/pwhich',
+	],
+	( $] >= 5.005 ? (
+		AUTHOR => 'Adam Kennedy <adamk at cpan.org>',
+	) : () ),
+	( $ExtUtils::MakeMaker::VERSION ge '6.31' ? (
+		LICENSE => 'perl',
+	) : () ),
 );
--- README
+++ README
@@ -1,56 +1,109 @@
-File::Which
-===========
+NAME
+    File::Which - Portable implementation of the `which' utility
 
-File::Which is a portable implementation (in Perl) of `which', and can
-be used to get the absolute filename of an executable program
-installed somewhere in your PATH, or just check for its existence. It
-includes the command-line utility `pwhich' which has the same function
-as `which'.
-
-INSTALLATION
-
-To install this module type the following (on Windows, use `nmake',
-which can be obtained freely from Microsoft: see ActivePerl
-documentation):
-
-   $ tar zxvf File-Which-x.xx.tar.gz  (replace x.xx with the correct version number)
-   $ cd File-Which-x.xx
-   $ perl Makefile.PL
-   $ make
-   $ make test
-   $ make install
-
-Using the CPAN shell:
-
-   $ perl -MCPAN -eshell
-   cpan> install File::Which
-   cpan> exit
-
-TESTING
-
-When you run `make test', File::Which will test some of its
-functionality. It uses the t/test-bin/ directory for this, treating
-the files below it as programs.
-
-The tests might still be a bit shaky because there is a bit of magic
-involved in doing this -- please report any problems you might have.
-
-Furthermore, the files under t/test-bin/ are *not* supposed to be
-executed: do so at your own risk. Especially, the *.exe files are not
-valid applications as they aren't compiled and might make your system
-crash or whatever. Execute them at your own risk. (But don't worry,
-this package doesn't bite otherwise :)
-
-DEPENDENCIES
-
-This module requires these other modules and libraries:
-
-  File::Spec - distributed with perl.
-
-COPYRIGHT AND LICENCE
-
-Copyright (C) 2002 Per Einar Ellefsen <per.einar (at) skynet.be>
-
-This library is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself. 
+SYNOPSIS
+      use File::Which;                  # exports which()
+      use File::Which qw(which where);  # exports which() and where()
+      
+  my $exe_path = which('perldoc');
+      
+  my @paths = where('perl');
+      - Or -
+      my @paths = which('perl'); # an array forces search for all of them
+
+DESCRIPTION
+    "File::Which" was created to be able to get the paths to executable
+    programs on systems under which the `which' program wasn't implemented
+    in the shell.
+
+    "File::Which" searches the directories of the user's "PATH" (as returned
+    by "File::Spec->path()"), looking for executable files having the name
+    specified as a parameter to "which()". Under Win32 systems, which do not
+    have a notion of directly executable files, but uses special extensions
+    such as ".exe" and ".bat" to identify them, "File::Which" takes extra
+    steps to assure that you will find the correct file (so for example, you
+    might be searching for "perl", it'll try perl.exe, perl.bat, etc.)
+
+Steps Used on Win32, DOS, OS2 and VMS
+  Windows NT
+    Windows NT has a special environment variable called "PATHEXT", which is
+    used by the shell to look for executable files. Usually, it will contain
+    a list in the form ".EXE;.BAT;.COM;.JS;.VBS" etc. If "File::Which" finds
+    such an environment variable, it parses the list and uses it as the
+    different extensions.
+
+  Windows 9x and other ancient Win/DOS/OS2
+    This set of operating systems don't have the "PATHEXT" variable, and
+    usually you will find executable files there with the extensions ".exe",
+    ".bat" and (less likely) ".com". "File::Which" uses this hardcoded list
+    if it's running under Win32 but does not find a "PATHEXT" variable.
+
+  VMS
+    Same case as Windows 9x: uses ".exe" and ".com" (in that order).
+
+Functions
+  which($short_exe_name)
+    Exported by default.
+
+    $short_exe_name is the name used in the shell to call the program (for
+    example, "perl").
+
+    If it finds an executable with the name you specified, "which()" will
+    return the absolute path leading to this executable (for example,
+    /usr/bin/perl or C:\Perl\Bin\perl.exe).
+
+    If it does *not* find the executable, it returns "undef".
+
+    If "which()" is called in list context, it will return *all* the
+    matches.
+
+  where($short_exe_name)
+    Not exported by default.
+
+    Same as "which($short_exe_name)" in array context. Same as the `where'
+    utility, will return an array containing all the path names matching
+    $short_exe_name.
+
+BUGS AND CAVEATS
+    Not tested on VMS or MacOS, although there is platform specific code for
+    those. Anyone who haves a second would be very kind to send me a report
+    of how it went.
+
+    File::Spec adds the current directory to the front of PATH if on Win32,
+    VMS or MacOS. I have no knowledge of those so don't know if the current
+    directory is searced first or not. Could someone please tell me?
+
+SUPPORT
+    Bugs should be reported via the CPAN bug tracker at
+
+    <http://rt.cpan.org/NoAuth/ReportBug.html?Queue=File-Which>
+
+    For other issues, contact the maintainer.
+
+AUTHOR
+    Adam Kennedy <adamk at cpan.org>
+
+    Per Einar Ellefsen <pereinar at cpan.org>
+
+    Originated in modperl-2.0/lib/Apache/Build.pm. Changed for use in DocSet
+    (for the mod_perl site) and Win32-awareness by me, with slight
+    modifications by Stas Bekman, then extracted to create "File::Which".
+
+    Version 0.04 had some significant platform-related changes, taken from
+    the Perl Power Tools `which' implementation by Abigail with enhancements
+    from Peter Prymmer. See
+    <http://www.perl.com/language/ppt/src/which/index.html> for more
+    information.
+
+COPYRIGHT
+    Copyright 2002 Per Einar Ellefsen.
+
+    Some parts copyright 2009 Adam Kennedy.
+
+    This program is free software; you can redistribute it and/or modify it
+    under the same terms as Perl itself.
+
+SEE ALSO
+    File::Spec, which(1), Perl Power Tools:
+    <http://www.perl.com/language/ppt/index.html>.
 
--- Which.pm
+++ Which.pm
-package File::Which;
-
-use strict;
-
-require Exporter;
-
- at File::Which::ISA       = qw(Exporter);
-
- at File::Which::EXPORT    = qw(which);
- at File::Which::EXPORT_OK = qw(where);
-
-$File::Which::VERSION = '0.05';
-
-use File::Spec;
-
-my $Is_VMS    = ($^O eq 'VMS');
-my $Is_MacOS  = ($^O eq 'MacOS');
-my $Is_DOSish = (($^O eq 'MSWin32') or
-                ($^O eq 'dos')     or
-                ($^O eq 'os2'));
-
-# For Win32 systems, stores the extensions used for
-# executable files
-# For others, the empty string is used
-# because 'perl' . '' eq 'perl' => easier
-my @path_ext = ('');
-if ($Is_DOSish) {
-    if ($ENV{PATHEXT} and $Is_DOSish) {    # WinNT. PATHEXT might be set on Cygwin, but not used.
-        push @path_ext, split ';', $ENV{PATHEXT};
-    }
-    else {
-        push @path_ext, qw(.com .exe .bat); # Win9X or other: doesn't have PATHEXT, so needs hardcoded.
-    }
-}
-elsif ($Is_VMS) { 
-    push @path_ext, qw(.exe .com);
-}
-
-sub which {
-    my ($exec) = @_;
-
-    return undef unless $exec;
-
-    my $all = wantarray;
-    my @results = ();
-    
-    # check for aliases first
-    if ($Is_VMS) {
-        my $symbol = `SHOW SYMBOL $exec`;
-        chomp($symbol);
-        if (!$?) {
-            return $symbol unless $all;
-            push @results, $symbol;
-        }
-    }
-    if ($Is_MacOS) {
-        my @aliases = split /\,/, $ENV{Aliases};
-        foreach my $alias (@aliases) {
-            # This has not been tested!!
-            # PPT which says MPW-Perl cannot resolve `Alias $alias`,
-            # let's just hope it's fixed
-            if (lc($alias) eq lc($exec)) {
-                chomp(my $file = `Alias $alias`);
-                last unless $file;  # if it failed, just go on the normal way
-                return $file unless $all;
-                push @results, $file;
-                # we can stop this loop as if it finds more aliases matching,
-                # it'll just be the same result anyway
-                last;
-            }
-        }
-    }
-
-    my @path = File::Spec->path();
-    unshift @path, File::Spec->curdir if $Is_DOSish or $Is_VMS or $Is_MacOS;
-
-    for my $base (map { File::Spec->catfile($_, $exec) } @path) {
-       for my $ext (@path_ext) {
-            my $file = $base.$ext;
-# print STDERR "$file\n";
-
-            if ((-x $file or    # executable, normal case
-                 ($Is_MacOS ||  # MacOS doesn't mark as executable so we check -e
-                  ($Is_DOSish and grep { $file =~ /$_$/i } @path_ext[1..$#path_ext])
-                                # DOSish systems don't pass -x on non-exe/bat/com files.
-                                # so we check -e. However, we don't want to pass -e on files
-                                # that aren't in PATHEXT, like README.
-                 and -e _)
-                ) and !-d _)
-            {                   # and finally, we don't want dirs to pass (as they are -x)
-
-# print STDERR "-x: ", -x $file, " -e: ", -e _, " -d: ", -d _, "\n";
-
-                    return $file unless $all;
-                    push @results, $file;       # Make list to return later
-            }
-        }
-    }
-    
-    if($all) {
-        return @results;
-    } else {
-        return undef;
-    }
-}
-
-sub where {
-    my @res = which($_[0]); # force wantarray
-    return @res;
-}
-
-1;
-__END__
-
-=head1 NAME
-
-File::Which - Portable implementation of the `which' utility
-
-=head1 SYNOPSIS
-
-  use File::Which;                  # exports which()
-  use File::Which qw(which where);  # exports which() and where()
-  
-  my $exe_path = which('perldoc');
-  
-  my @paths = where('perl');
-  - Or -
-  my @paths = which('perl'); # an array forces search for all of them
-
-=head1 DESCRIPTION
-
-C<File::Which> was created to be able to get the paths to executable programs
-on systems under which the `which' program wasn't implemented in the shell.
-
-C<File::Which> searches the directories of the user's C<PATH> (as returned by
-C<File::Spec-E<gt>path()>), looking for executable files having the name specified
-as a parameter to C<which()>. Under Win32 systems, which do not have a notion of
-directly executable files, but uses special extensions such as C<.exe> and
-C<.bat> to identify them, C<File::Which> takes extra steps to assure that you
-will find the correct file (so for example, you might be searching for C<perl>,
-it'll try C<perl.exe>, C<perl.bat>, etc.)
-
-=head1 Steps Used on Win32, DOS, OS2 and VMS
-
-=head2 Windows NT
-
-Windows NT has a special environment variable called C<PATHEXT>, which is used
-by the shell to look for executable files. Usually, it will contain a list in
-the form C<.EXE;.BAT;.COM;.JS;.VBS> etc. If C<File::Which> finds such an
-environment variable, it parses the list and uses it as the different extensions.
-
-=head2 Windows 9x and other ancient Win/DOS/OS2
-
-This set of operating systems don't have the C<PATHEXT> variable, and usually
-you will find executable files there with the extensions C<.exe>, C<.bat> and
-(less likely) C<.com>. C<File::Which> uses this hardcoded list if it's running
-under Win32 but does not find a C<PATHEXT> variable.
-
-=head2 VMS
-
-Same case as Windows 9x: uses C<.exe> and C<.com> (in that order).
-
-=head1 Functions
-
-=head2 which($short_exe_name)
-
-Exported by default.
-
-C<$short_exe_name> is the name used in the shell to call the program (for
-example, C<perl>).
-
-If it finds an executable with the name you specified, C<which()> will return
-the absolute path leading to this executable (for example, C</usr/bin/perl> or
-C<C:\Perl\Bin\perl.exe>).
-
-If it does I<not> find the executable, it returns C<undef>.
-
-If C<which()> is called in list context, it will return I<all> the
-matches.
-
-=head2 where($short_exe_name)
-
-Not exported by default.
-
-Same as C<which($short_exe_name)> in array context. Same as the
-C<`where'> utility, will return an array containing all the path names
-matching C<$short_exe_name>.
-
-
-=head1 Bugs and Caveats
-
-Not tested on VMS or MacOS, although there is platform specific code
-for those. Anyone who haves a second would be very kind to send me a
-report of how it went.
-
-File::Spec adds the current directory to the front of PATH if on
-Win32, VMS or MacOS. I have no knowledge of those so don't know if the
-current directory is searced first or not. Could someone please tell
-me?
-
-=head1 Author
-
-Per Einar Ellefsen, E<lt>per.einar (at) skynet.beE<gt>
-
-Originated in I<modperl-2.0/lib/Apache/Build.pm>. Changed for use in DocSet
-(for the mod_perl site) and Win32-awareness by me, with slight modifications
-by Stas Bekman, then extracted to create C<File::Which>.
-
-Version 0.04 had some significant platform-related changes, taken from
-the Perl Power Tools C<`which'> implementation by Abigail with
-enhancements from Peter Prymmer. See
-http://www.perl.com/language/ppt/src/which/index.html for more
-information.
-
-=head1 License
-
-This library is free software; you can redistribute it and/or modify it under
-the same terms as Perl itself.
-
-=head1 See Also
-
-L<File::Spec>, L<which(1)>, Perl Power Tools:
-http://www.perl.com/language/ppt/index.html .
-
-=cut
--- bin
+++ bin
-(directory)
--- bin/pwhich
+++ bin/pwhich
-#!/usr/bin/perl -w
-
-use strict;
-
-use File::Which;
-use Getopt::Std;
-
-my %opts = ();
-
-getopts('av', \%opts);
-
-my @files = @ARGV;
-
-if ($opts{v}) {
-    print <<"END";
-This is pwhich running File::Which version $File::Which::VERSION
-
-Copyright 2002 Per Einar Ellefsen.
-This program is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself.
-END
-
-    exit;
-}
-
-unless(@files) {
-    print <<"EOS";
-Usage: $0 [-a] [-v] programname [programname ...]
-      -a        Print all matches in PATH, not just the first.
-      -v        Prints version and exits
-
-EOS
-          
-    exit;
-}
-
-for my $file (@files) {
-    my @result = $opts{a} ? which($file) : scalar which($file); # need to force scalar
-    @result = () unless defined $result[0];   # we might end up with @result = (undef) -> 1 elem
-    for my $result (@result) {
-        print "$result\n" if $result;
-    }
-    print STDERR "pwhich: no $file in PATH\n" unless @result;
-}
-
-__END__
-
-=head1 NAME
-
-pwhich - Perl-only `which'
-
-=head1 Synopsis
-
-  $ pwhich perl
-  $ pwhich -a perl          # print all matches
-  $ pwhich perl perldoc ... # look for multiple programs
-  $ pwhich -a perl perldoc ...
-
-=head1 DESCRIPTION
-
-`pwhich' is a command-line utility program for finding paths to other
-programs based on the user's C<PATH>. It is similar to the usualy Unix
-tool `which', and tries to emulate its functionality, but is written
-purely in Perl (uses the module C<File::Which>), so is portable.
-
-
-=head1 Calling syntax
-
-  $ pwhich [-a] [-v] programname [programname ...]
-
-=head2 Options
-
-=over
-
-=item -a
-
-The option I<-a> will make C<pwhich> print all matches found in the
-C<PATH> variable instead of just the first one. Each match is printed
-on a separate line.
-
-=item -v
-
-Prints version (of C<File::Which>) and copyright notice and exits.
-
-=back
-
-=head1 License
-
-This program is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself.
-
-=head1 See Also
-
-L<perl>, L<File::Which>, L<which(1)>
-
-=head1 Author
-
-Per Einar Ellefsen, E<lt>per.einar (at) skynet.beE<gt>
-
-=cut
-
--- lib
+++ lib
+(directory)
--- lib/File
+++ lib/File
+(directory)
--- lib/File/Which.pm
+++ lib/File/Which.pm
+package File::Which;
+
+use 5.004;
+use strict;
+use Exporter   ();
+use File::Spec ();
+
+use vars qw{$VERSION @ISA @EXPORT @EXPORT_OK};
+BEGIN {
+	$VERSION   = '1.09';
+	@ISA       = 'Exporter';
+	@EXPORT    = 'which';
+	@EXPORT_OK = 'where';
+}
+
+use constant IS_VMS => ($^O eq 'VMS');
+use constant IS_MAC => ($^O eq 'MacOS');
+use constant IS_DOS => ($^O eq 'MSWin32' or $^O eq 'dos' or $^O eq 'os2');
+
+# For Win32 systems, stores the extensions used for
+# executable files
+# For others, the empty string is used
+# because 'perl' . '' eq 'perl' => easier
+my @PATHEXT = ('');
+if ( IS_DOS ) {
+	# WinNT. PATHEXT might be set on Cygwin, but not used.
+	if ( $ENV{PATHEXT} ) {
+		push @PATHEXT, split ';', $ENV{PATHEXT};
+	} else {
+		# Win9X or other: doesn't have PATHEXT, so needs hardcoded.
+		push @PATHEXT, qw{.com .exe .bat};
+	}
+} elsif ( IS_VMS ) {
+	push @PATHEXT, qw{.exe .com};
+}
+
+sub which {
+	my ($exec) = @_;
+
+	return undef unless $exec;
+
+	my $all = wantarray;
+	my @results = ();
+
+	# check for aliases first
+	if ( IS_VMS ) {
+		my $symbol = `SHOW SYMBOL $exec`;
+		chomp($symbol);
+		unless ( $? ) {
+			return $symbol unless $all;
+			push @results, $symbol;
+		}
+	}
+	if ( IS_MAC ) {
+		my @aliases = split /\,/, $ENV{Aliases};
+		foreach my $alias ( @aliases ) {
+			# This has not been tested!!
+			# PPT which says MPW-Perl cannot resolve `Alias $alias`,
+			# let's just hope it's fixed
+			if ( lc($alias) eq lc($exec) ) {
+				chomp(my $file = `Alias $alias`);
+				last unless $file;  # if it failed, just go on the normal way
+				return $file unless $all;
+				push @results, $file;
+				# we can stop this loop as if it finds more aliases matching,
+				# it'll just be the same result anyway
+				last;
+			}
+		}
+	}
+
+	my @path = File::Spec->path;
+	if ( IS_DOS or IS_VMS or IS_MAC ) {
+		unshift @path, File::Spec->curdir;
+	}
+
+	foreach my $base ( map { File::Spec->catfile($_, $exec) } @path ) {
+		for my $ext ( @PATHEXT ) {
+			my $file = $base.$ext;
+
+			# We don't want dirs (as they are -x)
+			next if -d $file;
+
+			if (
+				# Executable, normal case
+				-x _
+				or (
+					# MacOS doesn't mark as executable so we check -e
+					IS_MAC
+					||
+					(
+						IS_DOS
+						and
+						grep {
+							$file =~ /$_\z/i
+						} @PATHEXT[1..$#PATHEXT]
+					)
+					# DOSish systems don't pass -x on
+					# non-exe/bat/com files. so we check -e.
+					# However, we don't want to pass -e on files
+					# that aren't in PATHEXT, like README.
+					and -e _
+				)
+			) {
+				return $file unless $all;
+				push @results, $file;
+			}
+		}
+	}
+
+	if ( $all ) {
+		return @results;
+	} else {
+		return undef;
+	}
+}
+
+sub where {
+	# force wantarray
+	my @res = which($_[0]);
+	return @res;
+}
+
+1;
+
+__END__
+
+=pod
+
+=head1 NAME
+
+File::Which - Portable implementation of the `which' utility
+
+=head1 SYNOPSIS
+
+  use File::Which;                  # exports which()
+  use File::Which qw(which where);  # exports which() and where()
+  
+  my $exe_path = which('perldoc');
+  
+  my @paths = where('perl');
+  - Or -
+  my @paths = which('perl'); # an array forces search for all of them
+
+=head1 DESCRIPTION
+
+C<File::Which> was created to be able to get the paths to executable programs
+on systems under which the `which' program wasn't implemented in the shell.
+
+C<File::Which> searches the directories of the user's C<PATH> (as returned by
+C<File::Spec-E<gt>path()>), looking for executable files having the name
+specified as a parameter to C<which()>. Under Win32 systems, which do not have a
+notion of directly executable files, but uses special extensions such as C<.exe>
+and C<.bat> to identify them, C<File::Which> takes extra steps to assure that
+you will find the correct file (so for example, you might be searching for
+C<perl>, it'll try F<perl.exe>, F<perl.bat>, etc.)
+
+=head1 Steps Used on Win32, DOS, OS2 and VMS
+
+=head2 Windows NT
+
+Windows NT has a special environment variable called C<PATHEXT>, which is used
+by the shell to look for executable files. Usually, it will contain a list in
+the form C<.EXE;.BAT;.COM;.JS;.VBS> etc. If C<File::Which> finds such an
+environment variable, it parses the list and uses it as the different
+extensions.
+
+=head2 Windows 9x and other ancient Win/DOS/OS2
+
+This set of operating systems don't have the C<PATHEXT> variable, and usually
+you will find executable files there with the extensions C<.exe>, C<.bat> and
+(less likely) C<.com>. C<File::Which> uses this hardcoded list if it's running
+under Win32 but does not find a C<PATHEXT> variable.
+
+=head2 VMS
+
+Same case as Windows 9x: uses C<.exe> and C<.com> (in that order).
+
+=head1 Functions
+
+=head2 which($short_exe_name)
+
+Exported by default.
+
+C<$short_exe_name> is the name used in the shell to call the program (for
+example, C<perl>).
+
+If it finds an executable with the name you specified, C<which()> will return
+the absolute path leading to this executable (for example, F</usr/bin/perl> or
+F<C:\Perl\Bin\perl.exe>).
+
+If it does I<not> find the executable, it returns C<undef>.
+
+If C<which()> is called in list context, it will return I<all> the
+matches.
+
+=head2 where($short_exe_name)
+
+Not exported by default.
+
+Same as C<which($short_exe_name)> in array context. Same as the
+C<`where'> utility, will return an array containing all the path names
+matching C<$short_exe_name>.
+
+=head1 BUGS AND CAVEATS
+
+Not tested on VMS or MacOS, although there is platform specific code
+for those. Anyone who haves a second would be very kind to send me a
+report of how it went.
+
+File::Spec adds the current directory to the front of PATH if on
+Win32, VMS or MacOS. I have no knowledge of those so don't know if the
+current directory is searced first or not. Could someone please tell
+me?
+
+=head1 SUPPORT
+
+Bugs should be reported via the CPAN bug tracker at
+
+L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=File-Which>
+
+For other issues, contact the maintainer.
+
+=head1 AUTHOR
+
+Adam Kennedy E<lt>adamk at cpan.orgE<gt>
+
+Per Einar Ellefsen E<lt>pereinar at cpan.orgE<gt>
+
+Originated in F<modperl-2.0/lib/Apache/Build.pm>. Changed for use in DocSet
+(for the mod_perl site) and Win32-awareness by me, with slight modifications
+by Stas Bekman, then extracted to create C<File::Which>.
+
+Version 0.04 had some significant platform-related changes, taken from
+the Perl Power Tools C<`which'> implementation by Abigail with
+enhancements from Peter Prymmer. See
+L<http://www.perl.com/language/ppt/src/which/index.html> for more
+information.
+
+=head1 COPYRIGHT
+
+Copyright 2002 Per Einar Ellefsen.
+
+Some parts copyright 2009 Adam Kennedy.
+
+This program is free software; you can redistribute it and/or modify
+it under the same terms as Perl itself.
+
+=head1 SEE ALSO
+
+L<File::Spec>, L<which(1)>, Perl Power Tools:
+L<http://www.perl.com/language/ppt/index.html>.
+
+=cut
--- script
+++ script
+(directory)
--- script/pwhich
+++ script/pwhich
+#!/usr/bin/perl
+
+use 5.004;
+use strict;
+use File::Which ();
+use Getopt::Std ();
+
+use vars qw{$VERSION};
+BEGIN {
+	$VERSION = '1.09';
+}
+
+# Handle options
+my %opts = ();
+Getopt::Std::getopts('av', \%opts);
+
+if ( $opts{v} ) {
+	print <<"END_TEXT";
+This is pwhich running File::Which version $File::Which::VERSION
+
+Copyright 2002 Per Einar Ellefsen.
+
+Some parts copyright 2009 Adam Kennedy.
+
+This program is free software; you can redistribute it and/or modify
+it under the same terms as Perl itself.
+END_TEXT
+
+	exit(0);
+}
+
+unless ( @ARGV ) {
+	print <<"END_TEXT";
+Usage: $0 [-a] [-v] programname [programname ...]
+      -a        Print all matches in PATH, not just the first.
+      -v        Prints version and exits
+
+END_TEXT
+
+	exit(0);
+}
+
+foreach my $file ( @ARGV ) {
+	my @result = $opts{a}
+		? File::Which::which($file)
+		# Need to force scalar
+		: scalar File::Which::which($file);
+
+	# We might end up with @result = (undef) -> 1 elem
+	@result = () unless defined $result[0];
+	foreach my $result ( @result ) {
+		print "$result\n" if $result;
+	}
+	unless ( @result ) {
+		print STDERR "pwhich: no $file in PATH\n";
+		exit(255);
+	}
+}
+
+exit(0);
+
+__END__
+
+=pod
+
+=head1 NAME
+
+pwhich - Perl-only `which'
+
+=head1 SYNOPSIS
+
+  $ pwhich perl
+  $ pwhich -a perl          # print all matches
+  $ pwhich perl perldoc ... # look for multiple programs
+  $ pwhich -a perl perldoc ...
+
+=head1 DESCRIPTION
+
+`pwhich' is a command-line utility program for finding paths to other
+programs based on the user's C<PATH>. It is similar to the usualy Unix
+tool `which', and tries to emulate its functionality, but is written
+purely in Perl (uses the module C<File::Which>), so is portable.
+
+=head2 Calling syntax
+
+  $ pwhich [-a] [-v] programname [programname ...]
+
+=head2 Options
+
+=over
+
+=item -a
+
+The option I<-a> will make C<pwhich> print all matches found in the
+C<PATH> variable instead of just the first one. Each match is printed
+on a separate line.
+
+=item -v
+
+Prints version (of C<File::Which>) and copyright notice and exits.
+
+=back
+
+=head1 SUPPORT
+
+Bugs should be reported via the CPAN bug tracker at
+
+L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=File-Which>
+
+For other issues, contact the maintainer.
+
+=head1 AUTHOR
+
+Adam Kennedy E<lt>adamk at cpan.orgE<gt>
+
+Per Einar Ellefsen E<lt>pereinar at cpan.orgE<gt>
+
+Originated in F<modperl-2.0/lib/Apache/Build.pm>. Changed for use in DocSet
+(for the mod_perl site) and Win32-awareness by me, with slight modifications
+by Stas Bekman, then extracted to create C<File::Which>.
+
+Version 0.04 had some significant platform-related changes, taken from
+the Perl Power Tools C<`which'> implementation by Abigail with
+enhancements from Peter Prymmer. See
+L<http://www.perl.com/language/ppt/src/which/index.html> for more
+information.
+
+=head1 COPYRIGHT
+
+Copyright 2002 Per Einar Ellefsen.
+
+Some parts copyright 2009 Adam Kennedy.
+
+This program is free software; you can redistribute it and/or modify
+it under the same terms as Perl itself.
+
+=head1 SEE ALSO
+
+L<perl>, L<File::Which>, L<which(1)>
+
+=cut
--- t/01_compile.t
+++ t/01_compile.t
+#!/usr/bin/perl
+
+use 5.004;
+use strict;
+BEGIN {
+	$|  = 1;
+	$^W = 1;
+}
+
+use Test::More tests => 2;
+use Test::Script;
+
+use_ok( 'File::Which' );
+script_compiles('script/pwhich');
--- t/02_all.t
+++ t/02_all.t
+#!/usr/bin/perl
+
+use strict;
+BEGIN {
+	$|  = 1;
+	$^W = 1;
+}
+
+use Test::More tests => 4;
+use File::Spec ();
+use File::Which qw(which where);
+
+# Where is the test application
+my $test_bin = File::Spec->catdir( 't', 'test-bin' );
+ok( -d $test_bin, 'Found test-bin' );
+
+# Set up for running the test application
+local $ENV{PATH} = $test_bin;
+unless (
+	File::Which::IS_VMS
+	or
+	File::Which::IS_MAC
+	or
+	File::Which::IS_DOS
+) {
+	my $all = File::Spec->catfile( $test_bin, 'all' );
+	chmod 0755, $all;
+}
+
+my @result = which('all');
+like( $result[0], qr/all/i, 'Found all' );
+ok( scalar(@result), 'Found at least one result' );
+
+# Should have as many elements.
+is(
+	scalar(@result),
+	scalar(where('all')),
+	'Scalar which result matches where result',
+);
--- t/03_simple.t
+++ t/03_simple.t
+#!/usr/bin/perl
+
+use strict;
+BEGIN {
+	$|  = 1;
+	$^W = 1;
+}
+
+use Test::More tests => 10;
+use File::Spec  ();
+use File::Which qw{which where};
+
+use constant IS_VMS    => ($^O eq 'VMS');
+use constant IS_MAC    => ($^O eq 'MacOS');
+use constant IS_DOS    => ($^O eq 'MSWin32' or $^O eq 'dos' or $^O eq 'os2');
+use constant IS_CYGWIN => ($^O eq 'cygwin');
+
+# Check that it returns undef if no file is passed
+is(
+	scalar(which('')), undef,
+	'Null-length false result',
+);
+is(
+	scalar(which('non_existent_very_unlinkely_thingy_executable')), undef,
+	'Positive length false result',
+);
+
+# Where is the test application
+my $test_bin = File::Spec->catdir( 't', 'test-bin' );
+ok( -d $test_bin, 'Found test-bin' );
+
+# Set up for running the test application
+local $ENV{PATH} = $test_bin;
+unless (
+	File::Which::IS_VMS
+	or
+	File::Which::IS_MAC
+	or
+	File::Which::IS_DOS
+) {
+	my $test3 = File::Spec->catfile( $test_bin, 'test3' );
+	chmod 0755, $test3;
+}
+
+SKIP: {
+	skip("Not on DOS-like filesystem", 3) unless IS_DOS;
+	is( lc scalar which('test1'), 't\test-bin\test1.exe', 'Looking for test1.exe' );
+	is( lc scalar which('test2'), 't\test-bin\test2.bat', 'Looking for test2.bat' );
+	is( scalar which('test3'), undef, 'test3 returns undef' );
+}
+
+SKIP: {
+	skip("Not on a UNIX filesystem", 1) if IS_DOS;
+	skip("Not on a UNIX filesystem", 1) if IS_MAC;
+	skip("Not on a UNIX filesystem", 1) if IS_VMS;
+	is(
+		scalar(which('test3')),
+		File::Spec->catfile( $test_bin, 'test3'),
+		'Check test3 for Unix',
+	);
+}
+
+SKIP: {
+	skip("Not on a cygwin filesystem", 2) unless IS_CYGWIN;
+
+	# Cygwin: should make test1.exe transparent
+	is(
+		scalar(which('test1')),
+		File::Spec->catfile( $test_bin, 'test1' ),
+		'Looking for test1 on Cygwin: transparent to test1.exe',
+	);
+	is(
+		scalar(which('test4')),
+		undef,
+		'Make sure that which() doesn\'t return a directory',
+	);
+}
+
+# Make sure that .\ stuff works on DOSish, VMS, MacOS (. is in PATH implicitly).
+SKIP: {
+	unless ( IS_DOS or IS_VMS ) {
+		skip("Not on a DOS or VMS filesystem", 1);
+	}
+
+	chdir( $test_bin );
+	is(
+		lc scalar which('test1'),
+		File::Spec->catfile(File::Spec->curdir(), 'test1.exe'),
+		'Looking for test1.exe in curdir',
+	);
+}
--- t/04_pwhich.t
+++ t/04_pwhich.t
+#!/usr/bin/perl
+
+# Check the pwhich script by confirming it matches the function result
+
+use strict;
+BEGIN {
+	$|  = 1;
+	$^W = 1;
+}
+
+use Test::More tests => 4;
+use Test::Script;
+use File::Which;
+
+# Look for a very common program
+my $tool = 'perl';
+my $path = which($tool);
+ok( defined $path, "Found path to $tool" );
+ok( $path, "Found path to $tool" );
+ok( -f $path, "$tool exists" );
+
+# Can we find the tool with the command line version?
+script_runs(
+	[ 'script/pwhich', 'perl' ],
+	'Found perl with pwhich',
+);
--- t/97_meta.t
+++ t/97_meta.t
+#!/usr/bin/perl
+
+# Test that our META.yml file matches the current specification.
+
+use strict;
+BEGIN {
+	$|  = 1;
+	$^W = 1;
+}
+
+my $MODULE = 'Test::CPAN::Meta 0.12';
+
+# Don't run tests for installs
+use Test::More;
+unless ( $ENV{AUTOMATED_TESTING} or $ENV{RELEASE_TESTING} ) {
+	plan( skip_all => "Author tests not required for installation" );
+}
+
+# Load the testing module
+eval "use $MODULE";
+if ( $@ ) {
+	$ENV{RELEASE_TESTING}
+	? die( "Failed to load required release-testing module $MODULE" )
+	: plan( skip_all => "$MODULE not available for testing" );
+}
+
+meta_yaml_ok();
--- t/98_pod.t
+++ t/98_pod.t
+#!/usr/bin/perl
+
+# Test that the syntax of our POD documentation is valid
+
+use strict;
+BEGIN {
+	$|  = 1;
+	$^W = 1;
+}
+
+my @MODULES = (
+	'Pod::Simple 3.07',
+	'Test::Pod 1.26',
+);
+
+# Don't run tests for installs
+use Test::More;
+unless ( $ENV{AUTOMATED_TESTING} or $ENV{RELEASE_TESTING} ) {
+	plan( skip_all => "Author tests not required for installation" );
+}
+
+# Load the testing modules
+foreach my $MODULE ( @MODULES ) {
+	eval "use $MODULE";
+	if ( $@ ) {
+		$ENV{RELEASE_TESTING}
+		? die( "Failed to load required release-testing module $MODULE" )
+		: plan( skip_all => "$MODULE not available for testing" );
+	}
+}
+
+all_pod_files_ok();
--- t/99_pmv.t
+++ t/99_pmv.t
+#!/usr/bin/perl
+
+# Test that our declared minimum Perl version matches our syntax
+
+use strict;
+BEGIN {
+	$|  = 1;
+	$^W = 1;
+}
+
+my @MODULES = (
+	'Perl::MinimumVersion 1.20',
+	'Test::MinimumVersion 0.008',
+);
+
+# Don't run tests for installs
+use Test::More;
+unless ( $ENV{AUTOMATED_TESTING} or $ENV{RELEASE_TESTING} ) {
+	plan( skip_all => "Author tests not required for installation" );
+}
+
+# Load the testing modules
+foreach my $MODULE ( @MODULES ) {
+	eval "use $MODULE";
+	if ( $@ ) {
+		$ENV{RELEASE_TESTING}
+		? die( "Failed to load required release-testing module $MODULE" )
+		: plan( skip_all => "$MODULE not available for testing" );
+	}
+}
+
+all_minimum_version_from_metayml_ok();
--- t/all.t
+++ t/all.t
-
-use Test;
-BEGIN { plan tests => 3 }
-use File::Which qw(which where);
-
-# So let's try using test-bin, huh?
-
-my $Is_VMS    = ($^O eq 'VMS');
-my $Is_MacOS  = ($^O eq 'MacOS');
-my $Is_DOSish = (($^O eq 'MSWin32') or
-                ($^O eq 'dos')     or
-                ($^O eq 'os2'));
-my $Is_Cygwin = $^O eq 'cygwin';
-
-{
-  chdir 't' if (-d 't');
-  local $ENV{PATH} = 'test-bin';
-  
-  if (not ($Is_VMS or $Is_MacOS or $Is_DOSish)) { # dunno about VMS
-      chmod 0755, "test-bin/all";
-  }
-
-  my @result = which('all');
-  ok($result[0], qr/all/i);
-  ok(@result > 0, 1);
-  ok(scalar @result, scalar where('all')); # should have as many elements.
-
-}
--- t/load.t
+++ t/load.t
-use Test;
-
-BEGIN { plan tests => 1 };
-
-use File::Which;
-
-ok(1);
--- t/simple.t
+++ t/simple.t
-use Test;
-BEGIN { plan tests => 9; }
-use File::Which;
-use File::Spec;
-
-# check that it returns undef if no file is passed
-ok(scalar which(''), undef);
-
-ok(scalar which('non_existent_very_unlinkely_thingy_executable'), undef);
-
-# So let's try using test-bin, huh?
-
-my $Is_VMS    = ($^O eq 'VMS');
-my $Is_MacOS  = ($^O eq 'MacOS');
-my $Is_DOSish = (($^O eq 'MSWin32') or
-                ($^O eq 'dos')     or
-                ($^O eq 'os2'));
-my $Is_Cygwin = $^O eq 'cygwin';
-
-{
-  chdir 't' if (-d 't');
-  local $ENV{PATH} = 'test-bin';
-  
-  unless ($Is_VMS or $Is_MacOS or $Is_DOSish) { # dunno about VMS, think not
-      chmod 0755, "test-bin/test3";
-  }
-  
-  my $skip = 0;
-  # test1.exe
-  $skip = 1 unless $Is_DOSish;
-  skip($skip, lc scalar which('test1'), 'test-bin\test1.exe', 'Looking for test1.exe');
-  
-  # test2.bat
-  skip($skip, lc scalar which('test2'), 'test-bin\test2.bat', 'Looking for test2.bat');
-  
-  # Make sure that test3 isn't returned by File::Which on DOSish. (it is in
-  # PATH, but is a normal file on DOSish)
-  skip($skip, scalar which('test3'), undef);
-  
-  $skip = 0;
-  
-    # testing Unix finally:
-  $skip = 1 if $Is_DOSish or $Is_MacOS or $Is_VMS;
-  skip($skip, scalar which('test3'), 'test-bin/test3', 'Check test3 for Unix');
-  
-  $skip = 0;
-  # Cygwin: should make test1.exe transparent
-  $skip = 1 unless $Is_Cygwin;
-  skip($skip, scalar which('test1'), 'test-bin/test1', 'Looking for test1 on Cygwin: transparent to test1.exe');
-
-  ok(scalar which('test4'), undef, 'Make sure that which() doesn\'t return a directory');
-
-  chdir 'test-bin';
-  
-  $skip = 0;
-  
-  # Make sure that .\ stuff works on DOSish, VMS, MacOS (. is in PATH implicitly).
-  $skip = 1 unless $Is_DOSish or $Is_VMS; # or $Is_MacOS; # no idea
-                                          # how binaries should look
-                                          # like on Mac
-  skip($skip, lc scalar which('test1'),
-       File::Spec->catfile(File::Spec->curdir(), 'test1.exe'),
-       'Looking for test1.exe in curdir'
-  );
-  
-}
--- t/test-bin/test2.bat
+++ t/test-bin/test2.bat
@@ -1,3 +1,3 @@
- at echo off
-echo This is for testing File::Which
+ at echo off
+echo This is for testing File::Which
 echo Nothing interesting here!
\ No newline at end of file

++++++ perl-File-Which.yaml (new)
--- perl-File-Which.yaml
+++ perl-File-Which.yaml
+Name: perl-File-Which
+Summary: Portable implementation of the 'which' utility
+Version: 1.09
+Release: 5
+Group: Development/Libraries
+License: GPL+ or Artistic
+URL: http://search.cpan.org/dist/File-Which/
+Sources:
+    - http://www.cpan.org/authors/id/P/PE/PEREINAR/File-Which-%{version}.tar.gz
+Description: |
+    File::Which is a portable implementation (in Perl) of 'which', and can
+    be used to get the absolute filename of an executable program
+    installed somewhere in your PATH, or just check for its existence. It
+    includes the command-line utility 'pwhich' which has the same function
+    as 'which'.
+
+Requires:
+    - perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version))
+PkgBR:
+    - perl(ExtUtils::MakeMaker) perl(Test::More)
+Configure: none
+Builder: perl
+BuildArch: noarch
+Check: yes



More information about the MeeGo-commits mailing list