perl-begin / lib / files_dirs_modules.wml

<define-tag files_and_directories_modules>

<h2 id="modules">Modules</h2>

<p>
Useful modules for files and directories handling are:
</p>

<ul>

<li>
<a href="http://perldoc.perl.org/File/Spec.html">File::Spec</a> - a core module
to handle file and directory paths portably.
</li>

<li>
<a href="http://perldoc.perl.org/File/Basename.html">File::Basename</a> - a
core module to portably extract the basename, the dirname, the suffix and
other file paths parsing.
</li>

<li>
<cpan_self_dist d="String-ShellQuote" />
- quote strings for passing through the shell. Also see the list forms of
system.
</li>

<li>
<cpan_self_mod m="File::Path" /> - a core module to create or remove directory
trees (portably).
</li>

<li>
<cpan_self_mod m="File::Copy" /> - a core module to copy files.
</li>

<li>
<cpan_self_dist d="IO-All" /> - an all-in-one
IO package with a lot of syntactic sugar. Non-core.
</li>

<li>
<cpan_self_dist d="File-Slurp" /> - a module for fast and easy input
and output from files and directories. The interface is procedural
and quite spartan, but is still useful.
</li>

</ul>

<h3 id="directory_traversal">Directory Traversal</h3>

<p>
The built-in module for traversing a directory tree in Perl is
<cpan_self_mod m="File::Find" />, but it has some severe limitations in interface
and use. Some better alternatives are:
</p>

<ul>

<li>
<p>
<a href="http://www.shlomifish.org/open-source/projects/File-Find-Object/">File-Find-Object</a> - an object-oriented replacement for File::Find that:
1) can be instantiated 2) has an iterative interface 3) can be interrupted in
the middle and 4) can return result objects instead of path names.
</p>
</li>

<li>
<p>
<cpan_self_dist d="File-Next" /> - an alternative with an iterative interface,
but incapable of being instantiated.
</p>
</li>

<li>
<p>
<cpan_self_dist d="File-Find-Rule" />, which is still based on File::Find, and
<cpan_self_dist d="File-Find-Object-Rule" /> provide a more convenient and
succinct interface for finding what you want.
</p>
</li>

<li>
<p>
<cpan_self_dist d="Path-Class-Rule" />, provides an object oriented and
iterative file finder using Path::Class. Also of interes is its
<a href="https://metacpan.org/module/Path::Class::Rule#SEE-ALSO">“See Also”</a>
section, which contains links to other implementations, and a comparison
of them.
</p>
</li>

</ul>

</define-tag>
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.