CINXE.COM
search - Perldoc Browser
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>search - Perldoc Browser</title> <link rel="search" href="/opensearch.xml" type="application/opensearchdescription+xml" title="Perldoc Browser"> <link rel="canonical" href="https://perldoc.perl.org/search?q=tools"> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" integrity="sha384-JcKb8q3iqJ61gNV9KGb8thSsNjpSL0n8PARn9HuZOnIxN0hoP+VmmDGMN5t9UJ0Z" crossorigin="anonymous"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.5.0/styles/stackoverflow-light.min.css" integrity="sha512-cG1IdFxqipi3gqLmksLtuk13C+hBa57a6zpWxMeoY3Q9O6ooFxq50DayCdm0QrDgZjMUn23z/0PMZlgft7Yp5Q==" crossorigin="anonymous" /> <style> body { background: #f4f4f5; color: #020202; } .navbar-dark { background-image: -webkit-linear-gradient(top, #005f85 0, #002e49 100%); background-image: -o-linear-gradient(top, #005f85 0, #002e49 100%); background-image: linear-gradient(to bottom, #005f85 0, #002e49 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff005f85', endColorstr='#ff002e49', GradientType=0); background-repeat: repeat-x; } .navbar-dark .navbar-nav .nav-link, .navbar-dark .navbar-nav .nav-link:focus { color: #fff } .navbar-dark .navbar-nav .nav-link:hover { color: #ffef68 } #wrapperlicious { margin: 0 auto; font: 0.9em 'Helvetica Neue', Helvetica, sans-serif; font-weight: normal; line-height: 1.5em; margin: 0; padding: 0; } #wrapperlicious h1 { font-size: 1.5em } #wrapperlicious h2 { font-size: 1.3em } #wrapperlicious h3 { font-size: 1.1em } #wrapperlicious h4 { font-size: 0.9em } #wrapperlicious h1, #wrapperlicious h2, #wrapperlicious h3, #wrapperlicious h4, #wrapperlicious dt { color: #020202; margin-top: 1em; margin-bottom: 1em; position: relative; font-weight: bold; } #wrapperlicious a { color: inherit; text-decoration: underline } #wrapperlicious #toc { text-decoration: none } #wrapperlicious a:hover { color: #2a2a2a } #wrapperlicious a img { border: 0 } #wrapperlicious :not(pre) > code { color: inherit; background-color: rgba(0, 0, 0, 0.04); border-radius: 3px; font: 0.9em Consolas, Menlo, Monaco, monospace; padding: 0.3em; } #wrapperlicious dd { margin: 0; margin-left: 2em; } #wrapperlicious dt { color: #2a2a2a; font-weight: bold; margin-left: 0.9em; } #wrapperlicious p { margin-bottom: 1em; margin-top: 1em; } #wrapperlicious li > p { margin-bottom: 0; margin-top: 0; } #wrapperlicious pre { border: 1px solid #c1c1c1; border-radius: 3px; font: 100% Consolas, Menlo, Monaco, monospace; margin-bottom: 1em; margin-top: 1em; } #wrapperlicious pre > code { display: block; background-color: #f6f6f6; font: 0.9em Consolas, Menlo, Monaco, monospace; line-height: 1.5em; text-align: left; white-space: pre; padding: 1em; } #wrapperlicious dl, #wrapperlicious ol, #wrapperlicious ul { margin-bottom: 1em; margin-top: 1em; } #wrapperlicious ul { list-style-type: square; } #wrapperlicious ul ul { margin-bottom: 0px; margin-top: 0px; } #footer { font-size: 0.8em; padding-top: 0.5em; text-align: center; } #more { display: inline; font-size: 0.8em; } #perldocdiv { background-color: #fff; border: 1px solid #c1c1c1; border-bottom-left-radius: 5px; border-bottom-right-radius: 5px; margin-left: auto; margin-right: auto; padding: 3em; padding-top: 1em; max-width: 960px; } #moduleversion { float: right } #wrapperlicious .leading-notice { font-style: italic; padding-left: 1em; margin-top: 1em; margin-bottom: 1em; } #wrapperlicious .permalink { display: none; left: -0.75em; position: absolute; padding-right: 0.25em; text-decoration: none; } #wrapperlicious h1:hover .permalink, #wrapperlicious h2:hover .permalink, #wrapperlicious h3:hover .permalink, #wrapperlicious h4:hover .permalink, #wrapperlicious dt:hover .permalink { display: block; } </style> <!-- Global site tag (gtag.js) - Google Analytics --> <script async src="https://www.googletagmanager.com/gtag/js?id=G-KVNWBNT5FB"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-KVNWBNT5FB'); gtag('config', 'UA-50555-3'); </script> </head> <body> <nav class="navbar navbar-expand-md navbar-dark bg-dark justify-content-between"> <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <a class="navbar-brand" href="/">Perldoc Browser</a> <div class="collapse navbar-collapse" id="navbarNav"> <ul class="navbar-nav mr-auto"> <li class="nav-item dropdown text-nowrap"> <a class="nav-link dropdown-toggle" href="#" id="dropdownlink-stable" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">5.40.0</a> <div class="dropdown-menu" aria-labelledby="dropdownlink-stable"> <a class="dropdown-item" href="/search?q=tools">Latest</a> <div class="dropdown-divider"></div> <a class="dropdown-item active" href="/5.40.0/search?q=tools">5.40.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.38.2/search?q=tools">5.38.2</a> <a class="dropdown-item" href="/5.38.1/search?q=tools">5.38.1</a> <a class="dropdown-item" href="/5.38.0/search?q=tools">5.38.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.36.3/search?q=tools">5.36.3</a> <a class="dropdown-item" href="/5.36.2/search?q=tools">5.36.2</a> <a class="dropdown-item" href="/5.36.1/search?q=tools">5.36.1</a> <a class="dropdown-item" href="/5.36.0/search?q=tools">5.36.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.34.3/search?q=tools">5.34.3</a> <a class="dropdown-item" href="/5.34.2/search?q=tools">5.34.2</a> <a class="dropdown-item" href="/5.34.1/search?q=tools">5.34.1</a> <a class="dropdown-item" href="/5.34.0/search?q=tools">5.34.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.32.1/search?q=tools">5.32.1</a> <a class="dropdown-item" href="/5.32.0/search?q=tools">5.32.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.30.3/search?q=tools">5.30.3</a> <a class="dropdown-item" href="/5.30.2/search?q=tools">5.30.2</a> <a class="dropdown-item" href="/5.30.1/search?q=tools">5.30.1</a> <a class="dropdown-item" href="/5.30.0/search?q=tools">5.30.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.28.3/search?q=tools">5.28.3</a> <a class="dropdown-item" href="/5.28.2/search?q=tools">5.28.2</a> <a class="dropdown-item" href="/5.28.1/search?q=tools">5.28.1</a> <a class="dropdown-item" href="/5.28.0/search?q=tools">5.28.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.26.3/search?q=tools">5.26.3</a> <a class="dropdown-item" href="/5.26.2/search?q=tools">5.26.2</a> <a class="dropdown-item" href="/5.26.1/search?q=tools">5.26.1</a> <a class="dropdown-item" href="/5.26.0/search?q=tools">5.26.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.24.4/search?q=tools">5.24.4</a> <a class="dropdown-item" href="/5.24.3/search?q=tools">5.24.3</a> <a class="dropdown-item" href="/5.24.2/search?q=tools">5.24.2</a> <a class="dropdown-item" href="/5.24.1/search?q=tools">5.24.1</a> <a class="dropdown-item" href="/5.24.0/search?q=tools">5.24.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.22.4/search?q=tools">5.22.4</a> <a class="dropdown-item" href="/5.22.3/search?q=tools">5.22.3</a> <a class="dropdown-item" href="/5.22.2/search?q=tools">5.22.2</a> <a class="dropdown-item" href="/5.22.1/search?q=tools">5.22.1</a> <a class="dropdown-item" href="/5.22.0/search?q=tools">5.22.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.20.3/search?q=tools">5.20.3</a> <a class="dropdown-item" href="/5.20.2/search?q=tools">5.20.2</a> <a class="dropdown-item" href="/5.20.1/search?q=tools">5.20.1</a> <a class="dropdown-item" href="/5.20.0/search?q=tools">5.20.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.18.4/search?q=tools">5.18.4</a> <a class="dropdown-item" href="/5.18.3/search?q=tools">5.18.3</a> <a class="dropdown-item" href="/5.18.2/search?q=tools">5.18.2</a> <a class="dropdown-item" href="/5.18.1/search?q=tools">5.18.1</a> <a class="dropdown-item" href="/5.18.0/search?q=tools">5.18.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.16.3/search?q=tools">5.16.3</a> <a class="dropdown-item" href="/5.16.2/search?q=tools">5.16.2</a> <a class="dropdown-item" href="/5.16.1/search?q=tools">5.16.1</a> <a class="dropdown-item" href="/5.16.0/search?q=tools">5.16.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.14.4/search?q=tools">5.14.4</a> <a class="dropdown-item" href="/5.14.3/search?q=tools">5.14.3</a> <a class="dropdown-item" href="/5.14.2/search?q=tools">5.14.2</a> <a class="dropdown-item" href="/5.14.1/search?q=tools">5.14.1</a> <a class="dropdown-item" href="/5.14.0/search?q=tools">5.14.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.12.5/search?q=tools">5.12.5</a> <a class="dropdown-item" href="/5.12.4/search?q=tools">5.12.4</a> <a class="dropdown-item" href="/5.12.3/search?q=tools">5.12.3</a> <a class="dropdown-item" href="/5.12.2/search?q=tools">5.12.2</a> <a class="dropdown-item" href="/5.12.1/search?q=tools">5.12.1</a> <a class="dropdown-item" href="/5.12.0/search?q=tools">5.12.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.10.1/search?q=tools">5.10.1</a> <a class="dropdown-item" href="/5.10.0/search?q=tools">5.10.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.8.9/search?q=tools">5.8.9</a> <a class="dropdown-item" href="/5.8.8/search?q=tools">5.8.8</a> <a class="dropdown-item" href="/5.8.7/search?q=tools">5.8.7</a> <a class="dropdown-item" href="/5.8.6/search?q=tools">5.8.6</a> <a class="dropdown-item" href="/5.8.5/search?q=tools">5.8.5</a> <a class="dropdown-item" href="/5.8.4/search?q=tools">5.8.4</a> <a class="dropdown-item" href="/5.8.3/search?q=tools">5.8.3</a> <a class="dropdown-item" href="/5.8.2/search?q=tools">5.8.2</a> <a class="dropdown-item" href="/5.8.1/search?q=tools">5.8.1</a> <a class="dropdown-item" href="/5.8.0/search?q=tools">5.8.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.6.2/search?q=tools">5.6.2</a> <a class="dropdown-item" href="/5.6.1/search?q=tools">5.6.1</a> <a class="dropdown-item" href="/5.6.0/search?q=tools">5.6.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.005_04/search?q=tools">5.005_04</a> <a class="dropdown-item" href="/5.005_03/search?q=tools">5.005_03</a> <a class="dropdown-item" href="/5.005_02/search?q=tools">5.005_02</a> <a class="dropdown-item" href="/5.005_01/search?q=tools">5.005_01</a> <a class="dropdown-item" href="/5.005/search?q=tools">5.005</a> </div> </li> <li class="nav-item dropdown text-nowrap"> <a class="nav-link dropdown-toggle" href="#" id="dropdownlink-dev" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Dev</a> <div class="dropdown-menu" aria-labelledby="dropdownlink-dev"> <a class="dropdown-item" href="/blead/search?q=tools">blead</a> <a class="dropdown-item" href="/5.41.6/search?q=tools">5.41.6</a> <a class="dropdown-item" href="/5.41.5/search?q=tools">5.41.5</a> <a class="dropdown-item" href="/5.41.4/search?q=tools">5.41.4</a> <a class="dropdown-item" href="/5.41.3/search?q=tools">5.41.3</a> <a class="dropdown-item" href="/5.41.2/search?q=tools">5.41.2</a> <a class="dropdown-item" href="/5.41.1/search?q=tools">5.41.1</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.40.0-RC2/search?q=tools">5.40.0-RC2</a> <a class="dropdown-item" href="/5.40.0-RC1/search?q=tools">5.40.0-RC1</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.39.10/search?q=tools">5.39.10</a> <a class="dropdown-item" href="/5.39.9/search?q=tools">5.39.9</a> <a class="dropdown-item" href="/5.39.8/search?q=tools">5.39.8</a> <a class="dropdown-item" href="/5.39.7/search?q=tools">5.39.7</a> <a class="dropdown-item" href="/5.39.6/search?q=tools">5.39.6</a> <a class="dropdown-item" href="/5.39.5/search?q=tools">5.39.5</a> <a class="dropdown-item" href="/5.39.4/search?q=tools">5.39.4</a> <a class="dropdown-item" href="/5.39.3/search?q=tools">5.39.3</a> <a class="dropdown-item" href="/5.39.2/search?q=tools">5.39.2</a> <a class="dropdown-item" href="/5.39.1/search?q=tools">5.39.1</a> </div> </li> <li class="nav-item dropdown text-nowrap"> <a class="nav-link dropdown-toggle" href="#" id="dropdownlink-nav" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Documentation</a> <div class="dropdown-menu" aria-labelledby="dropdownlink-nav"> <a class="dropdown-item" href="/perl">Perl</a> <a class="dropdown-item" href="/perlintro">Intro</a> <a class="dropdown-item" href="/perl#Tutorials">Tutorials</a> <a class="dropdown-item" href="/perlfaq">FAQs</a> <a class="dropdown-item" href="/perl#Reference-Manual">Reference</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/perlop">Operators</a> <a class="dropdown-item" href="/functions">Functions</a> <a class="dropdown-item" href="/variables">Variables</a> <a class="dropdown-item" href="/modules">Modules</a> <a class="dropdown-item" href="/perlutil">Utilities</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/perldelta">Release Notes</a> <a class="dropdown-item" href="/perlcommunity">Community</a> <a class="dropdown-item" href="/perlhist">History</a> </div> </li> </ul> <ul class="navbar-nav"> <script> function set_expand (expand) { var perldocdiv = document.getElementById('perldocdiv'); var width = window.getComputedStyle(perldocdiv).getPropertyValue('max-width'); var expanded = (width == '' || width == 'none') ? true : false; if (expand === null) { expand = !expanded; } if ((expand && !expanded) || (!expand && expanded)) { perldocdiv.style.setProperty('max-width', expand ? 'none' : '960px'); var button_classlist = document.getElementById('content-expand-button').classList; if (expand) { button_classlist.add('btn-light'); button_classlist.remove('btn-outline-light'); } else { button_classlist.add('btn-outline-light'); button_classlist.remove('btn-light'); } } return expand; } function toggle_expand () { var expand = set_expand(null); document.cookie = 'perldoc_expand=' + (expand ? 1 : 0) + '; path=/; expires=Tue, 19 Jan 2038 03:14:07 UTC'; } function read_expand () { return document.cookie.split(';').some(function (item) { return item.indexOf('perldoc_expand=1') >= 0 }); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', function () { if (read_expand()) { set_expand(true); } }); } else if (read_expand()) { set_expand(true); } </script> <button id="content-expand-button" type="button" class="btn btn-outline-light d-none d-lg-inline-block mr-4" onclick="toggle_expand()">Expand</button> </ul> <form class="form-inline" method="get" action="/search"> <input class="form-control mr-3" type="search" name="q" placeholder="Search" aria-label="Search" value="tools"> </form> </div> </nav> <div id="wrapperlicious" class="container-fluid"> <div id="perldocdiv"> <div id="links"> "tools" <div id="more"> (<a href="https://metacpan.org/search?q=tools">Search CPAN</a>) </div> </div> <h1><a id="toc">SEARCH RESULTS</a></h1> <ul> <li> <a class="text-decoration-none" href="#FAQ">FAQ</a> </li> <li> <a class="text-decoration-none" href="#Functions">Functions</a> </li> <li> <a class="text-decoration-none" href="#Documentation">Documentation</a> </li> <li> <a class="text-decoration-none" href="#Perldeltas">Perldeltas</a> </li> </ul> <h2 id="FAQ"><a class="permalink" href="#FAQ">#</a>FAQ</h2> <dl> <dt id=""What-is-Perl?"-in-perlfaq1"><a id="What-is-Perl-in-perlfaq1"></a><a href="/perlfaq1#What-is-Perl%3F">"What is Perl?" in perlfaq1</a></dt> <dd> <p>make it particularly well-suited for tasks involving quick prototyping, system utilities, software <i><b>tools</b></i> ... ubiquitous C programming language and to a lesser extent from sed, awk, the Unix shell, and many other <i><b>tools</b></i></p> </dd> <dt id=""What's-MakeMaker?"-in-perlfaq3"><a id="Whats-MakeMaker-in-perlfaq3"></a><a href="/perlfaq3#What%27s-MakeMaker%3F">"What's MakeMaker?" in perlfaq3</a></dt> <dd> <p>The Unix <i><b>tool</b></i> make uses this file to manage dependencies and actions to process and install a Perl distribution</p> </dd> <dt id=""Where-do-I-get-the-include-files-to-do-ioctl()-or-syscall()?"-in-perlfaq8"><a id="Where-do-I-get-the-include-files-to-do-ioctl-or-syscall-in-perlfaq8"></a><a href="/perlfaq8#Where-do-I-get-the-include-files-to-do-ioctl()-or-syscall()%3F">"Where do I get the include files to do ioctl() or syscall()?" in perlfaq8</a></dt> <dd> <p>Historically, these would be generated by the h2ph <i><b>tool</b></i>, part of the standard perl distribution. ... This <i><b>tool</b></i> converts C header files to Perl extensions.</p> </dd> <dt id=""What-is-Plack-and-PSGI?"-in-perlfaq9"><a id="What-is-Plack-and-PSGI-in-perlfaq9"></a><a href="/perlfaq9#What-is-Plack-and-PSGI%3F">"What is Plack and PSGI?" in perlfaq9</a></dt> <dd> <p>Plack is a set of <i><b>tools</b></i> for using the PSGI stack.</p> </dd> <dt id=""How-does-Perl-compare-with-other-languages-like-Java,-Python,-REXX,-Scheme,-or-Tcl?"-in-perlfaq1"><a id="How-does-Perl-compare-with-other-languages-like-Java-Python-REXX-Scheme-or-Tcl-in-perlfaq1"></a><a href="/perlfaq1#How-does-Perl-compare-with-other-languages-like-Java%2C-Python%2C-REXX%2C-Scheme%2C-or-Tcl%3F">"How does Perl compare with other languages like Java, Python, REXX, Scheme, or Tcl?" in perlfaq1</a></dt> <dd> <p>As with any <i><b>tool</b></i> it can be used well or badly.</p> </dd> <dt id=""How-do-I-do-(anything)?"-in-perlfaq3"><a id="How-do-I-do-anything-in-perlfaq3"></a><a href="/perlfaq3#How-do-I-do-(anything)%3F">"How do I do (anything)?" in perlfaq3</a></dt> <dd> <p>NAME perlfaq3 - Programming <i><b>Tools</b></i> VERSION version 5.20240218 DESCRIPTION This section of the FAQ ... answers questions related to programmer <i><b>tools</b></i> and programming support.</p> </dd> <dt id=""How-can-I-convince-others-to-use-Perl?"-in-perlfaq1"><a id="How-can-I-convince-others-to-use-Perl-in-perlfaq1"></a><a href="/perlfaq1#How-can-I-convince-others-to-use-Perl%3F">"How can I convince others to use Perl?" in perlfaq1</a></dt> <dd> <p>Finally, keep in mind that Perl might not be the right <i><b>tool</b></i> for every job.</p> </dd> <dt id=""Does-Perl-have-anything-like-Ruby's-#{}-or-Python's-f-string?"-in-perlfaq4"><a id="Does-Perl-have-anything-like-Rubys-or-Pythons-f-string-in-perlfaq4"></a><a href="/perlfaq4#Does-Perl-have-anything-like-Ruby%27s-%23%7B%7D-or-Python%27s-f-string%3F">"Does Perl have anything like Ruby's #{} or Python's f string?" in perlfaq4</a></dt> <dd> <p>the Array @{[ sort @array ]}"; You may also want to look at the module Quote::Code, and templating <i><b>tools</b></i></p> </dd> <dt id=""How-do-I-keep-my-own-module/library-directory?"-in-perlfaq8"><a id="How-do-I-keep-my-own-module-library-directory-in-perlfaq8"></a><a href="/perlfaq8#How-do-I-keep-my-own-module%2Flibrary-directory%3F">"How do I keep my own module/library directory?" in perlfaq8</a></dt> <dd> <p>> o conf mbuild_arg "--install_base /mydir/perl" cpan> o conf commit INSTALL_BASE tells these <i><b>tools</b></i></p> </dd> <dt id=""Where-do-I-send-bug-reports?"-in-perlfaq2"><a id="Where-do-I-send-bug-reports-in-perlfaq2"></a><a href="/perlfaq2#Where-do-I-send-bug-reports%3F">"Where do I send bug reports?" in perlfaq2</a></dt> <dd> <p>was not in CORE (or so I think) If the module does not come with Perl, report its issues using the <i><b>tool</b></i></p> </dd> <dt id=""How-can-I-tell-whether-there's-a-character-waiting-on-a-filehandle?"-in-perlfaq5"><a id="How-can-I-tell-whether-theres-a-character-waiting-on-a-filehandle-in-perlfaq5"></a><a href="/perlfaq5#How-can-I-tell-whether-there%27s-a-character-waiting-on-a-filehandle%3F">"How can I tell whether there's a character waiting on a filehandle?" in perlfaq5</a></dt> <dd> <p>The h2ph <i><b>tool</b></i> that comes with Perl tries to convert C include files to Perl code, which can be required</p> </dd> <dt id=""Is-there-an-IDE-or-Windows-Perl-Editor?"-in-perlfaq3"><a id="Is-there-an-IDE-or-Windows-Perl-Editor-in-perlfaq3"></a><a href="/perlfaq3#Is-there-an-IDE-or-Windows-Perl-Editor%3F">"Is there an IDE or Windows Perl Editor?" in perlfaq3</a></dt> <dd> <p>The Unix philosophy is the philosophy of several small <i><b>tools</b></i> that each do one thing and do it well. ... complete integrated development environment (IDE) for creating, testing, and debugging Perl scripts; the <i><b>tool</b></i></p> </dd> </dl> <h2 id="Functions"><a class="permalink" href="#Functions">#</a>Functions</h2> <dl> <dt id=""split"-in-perlfunc-split-up-a-string-using-a-regexp-delimiter"><a id="split-in-perlfunc---split-up-a-string-using-a-regexp-delimiter"></a><a href="/functions/split">split</a> - split up a string using a regexp delimiter</dt> <dd> <p>As another special case, split emulates the default behavior of the command line <i><b>tool</b></i> awk when the PATTERN</p> </dd> </dl> <h2 id="Documentation"><a class="permalink" href="#Documentation">#</a>Documentation</h2> <dl> <dt id="Test2::Manual::Tooling::FirstTool-Write-your-first-tool-with-Test2."><a id="Test2"></a><a id="Test2::Manual::Tooling::FirstTool---Write-your-first-tool-with-Test2"></a><a href="/Test2::Manual::Tooling::FirstTool">Test2::Manual::Tooling::FirstTool</a> - Write your first tool with Test2.</dt> <dd> <p>NAME Test2::Manual::<i><b>Tooling</b></i>::First<i><b>Tool</b></i> - Write your first <i><b>tool</b></i> with Test2. ... DESCRIPTION This tutorial will help you write your very first <i><b>tool</b></i> by cloning the ok() <i><b>tool</b></i>.</p> </dd> <dt id="Test2::Tools-Documentation-for-Tools."><a id="Test21"></a><a id="Test2::Tools---Documentation-for-Tools"></a><a href="/Test2::Tools">Test2::Tools</a> - Documentation for Tools.</dt> <dd> <p>NAME Test2::<i><b>Tools</b></i> - Documentation for <i><b>Tools</b></i>. ... FAQ Why is it called Test2::<i><b>Tools</b></i>, and not Test2::<i><b>Tool</b></i>?</p> </dd> <dt id="Test2::Tools::Tester-Tools-to-help-you-test-other-testing-tools."><a id="Test22"></a><a id="Test2::Tools::Tester---Tools-to-help-you-test-other-testing-tools"></a><a href="/Test2::Tools::Tester">Test2::Tools::Tester</a> - Tools to help you test other testing tools.</dt> <dd> <p>NAME Test2::<i><b>Tools</b></i>::Tester - <i><b>Tools</b></i> to help you test other testing <i><b>tools</b></i>. ... DESCRIPTION This is a collection of <i><b>tools</b></i> that are useful when testing other test <i><b>tools</b></i>.</p> </dd> <dt id="Test2::Manual::Tooling::Plugin::ToolCompletes-How-to-add-behaviors-that-occur-when-a-tool-completes-work."><a id="Test23"></a><a id="Test2::Manual::Tooling::Plugin::ToolCompletes---How-to-add-behaviors-that-occur-when-a-tool-completes-work"></a><a href="/Test2::Manual::Tooling::Plugin::ToolCompletes">Test2::Manual::Tooling::Plugin::ToolCompletes</a> - How to add behaviors that occur when a tool completes work.</dt> <dd> <p>NAME Test2::Manual::<i><b>Tooling</b></i>::Plugin::<i><b>Tool</b></i>Completes - How to add behaviors that occur when a <i><b>tool</b></i> completes ... that are called every time a <i><b>tool</b></i> releases the context object.</p> </dd> <dt id="Test2::Tools::Ref-Tools-for-validating-references."><a id="Test24"></a><a id="Test2::Tools::Ref---Tools-for-validating-references"></a><a href="/Test2::Tools::Ref">Test2::Tools::Ref</a> - Tools for validating references.</dt> <dd> <p>NAME Test2::<i><b>Tools</b></i>::Ref - <i><b>Tools</b></i> for validating references. ... It also has <i><b>tools</b></i> to check if two refs are the same exact ref, or different.</p> </dd> <dt id="Test2::Tools::Exports-Tools-for-validating-exporters."><a id="Test25"></a><a id="Test2::Tools::Exports---Tools-for-validating-exporters"></a><a href="/Test2::Tools::Exports">Test2::Tools::Exports</a> - Tools for validating exporters.</dt> <dd> <p>NAME Test2::<i><b>Tools</b></i>::Exports - <i><b>Tools</b></i> for validating exporters. ... DESCRIPTION These are <i><b>tools</b></i> for checking that symbols have been imported into your namespace.</p> </dd> <dt id="Test2::Tools::Warnings-Tools-to-verify-warnings."><a id="Test26"></a><a id="Test2::Tools::Warnings---Tools-to-verify-warnings"></a><a href="/Test2::Tools::Warnings">Test2::Tools::Warnings</a> - Tools to verify warnings.</dt> <dd> <p>NAME Test2::<i><b>Tools</b></i>::Warnings - <i><b>Tools</b></i> to verify warnings. ... DESCRIPTION This is a collection of <i><b>tools</b></i> that can be used to test code that issues warnings.</p> </dd> <dt id="Test2::Manual::Tooling::Plugin::ToolStarts-How-to-add-behaviors-that-occur-when-a-tool-starts-work."><a id="Test27"></a><a id="Test2::Manual::Tooling::Plugin::ToolStarts---How-to-add-behaviors-that-occur-when-a-tool-starts-work"></a><a href="/Test2::Manual::Tooling::Plugin::ToolStarts">Test2::Manual::Tooling::Plugin::ToolStarts</a> - How to add behaviors that occur when a tool starts work.</dt> <dd> <p>NAME Test2::Manual::<i><b>Tooling</b></i>::Plugin::<i><b>Tool</b></i>Starts - How to add behaviors that occur when a <i><b>tool</b></i> starts ... In short this only fires off for the top level <i><b>tool</b></i>, not nested <i><b>tools</b></i>.</p> </dd> <dt id="Test2::Manual::Tooling-Manual-page-for-tool-authors."><a id="Test28"></a><a id="Test2::Manual::Tooling---Manual-page-for-tool-authors"></a><a href="/Test2::Manual::Tooling">Test2::Manual::Tooling</a> - Manual page for tool authors.</dt> <dd> <p><i><b>TOOL</b></i> TUTORIALS FIRST <i><b>TOOL</b></i> Test2::Manual::<i><b>Tooling</b></i>::First<i><b>Tool</b></i> - Introduction to writing <i><b>tools</b></i> by cloning ... NESTING <i><b>TOOLS</b></i> Test2::Manual::<i><b>Tooling</b></i>::Nesting - How to call other <i><b>tools</b></i> from your <i><b>tool</b></i>.</p> </dd> <dt id="Test2::Tools::Basic-Test2-implementation-of-the-basic-testing-tools."><a id="Test29"></a><a id="Test2::Tools::Basic---Test2-implementation-of-the-basic-testing-tools"></a><a href="/Test2::Tools::Basic">Test2::Tools::Basic</a> - Test2 implementation of the basic testing tools.</dt> <dd> <p>NAME Test2::<i><b>Tools</b></i>::Basic - Test2 implementation of the basic testing <i><b>tools</b></i>. ... Some <i><b>tools</b></i> have been modified for better diagnostics capabilities.</p> </dd> <dt id="Test2::Tools::Class-Test2-implementation-of-the-tools-for-testing-classes."><a id="Test210"></a><a id="Test2::Tools::Class---Test2-implementation-of-the-tools-for-testing-classes"></a><a href="/Test2::Tools::Class">Test2::Tools::Class</a> - Test2 implementation of the tools for testing classes.</dt> <dd> <p>NAME Test2::<i><b>Tools</b></i>::Class - Test2 implementation of the <i><b>tools</b></i> for testing classes. ... DESCRIPTION Test2 based <i><b>tools</b></i> for validating classes and objects.</p> </dd> <dt id="Test2::Tools::Event-Tools-for-generating-test-events."><a id="Test211"></a><a id="Test2::Tools::Event---Tools-for-generating-test-events"></a><a href="/Test2::Tools::Event">Test2::Tools::Event</a> - Tools for generating test events.</dt> <dd> <p>NAME Test2::<i><b>Tools</b></i>::Event - <i><b>Tools</b></i> for generating test events. ... DESCRIPTION This module provides <i><b>tools</b></i> for generating events quickly by bypassing the context/hub.</p> </dd> <dt id="Test2::Tools::Compare-Tools-for-comparing-deep-data-structures."><a id="Test212"></a><a id="Test2::Tools::Compare---Tools-for-comparing-deep-data-structures"></a><a href="/Test2::Tools::Compare">Test2::Tools::Compare</a> - Tools for comparing deep data structures.</dt> <dd> <p>NAME Test2::<i><b>Tools</b></i>::Compare - <i><b>Tools</b></i> for comparing deep data structures. ... There are both 'strict' and 'relaxed' versions of the <i><b>tools</b></i>.</p> </dd> <dt id="Test2::Tools::GenTemp-Tool-for-generating-a-populated-temp-directory."><a id="Test213"></a><a id="Test2::Tools::GenTemp---Tool-for-generating-a-populated-temp-directory"></a><a href="/Test2::Tools::GenTemp">Test2::Tools::GenTemp</a> - Tool for generating a populated temp directory.</dt> <dd> <p>NAME Test2::<i><b>Tools</b></i>::GenTemp - <i><b>Tool</b></i> for generating a populated temp directory. ... DESCRIPTION This exports a <i><b>tool</b></i> that helps you make a temporary directory, nested directories and text</p> </dd> <dt id="Test2::Tools::AsyncSubtest-Tools-for-writing-async-subtests."><a id="Test214"></a><a id="Test2::Tools::AsyncSubtest---Tools-for-writing-async-subtests"></a><a href="/Test2::Tools::AsyncSubtest">Test2::Tools::AsyncSubtest</a> - Tools for writing async subtests.</dt> <dd> <p>NAME Test2::<i><b>Tools</b></i>::AsyncSubtest - <i><b>Tools</b></i> for writing async subtests. ... DESCRIPTION These are <i><b>tools</b></i> for writing async subtests.</p> </dd> <dt id="Test2::Manual::Tooling::Testing-Tutorial-on-how-to-test-your-testing-tools."><a id="Test215"></a><a id="Test2::Manual::Tooling::Testing---Tutorial-on-how-to-test-your-testing-tools"></a><a href="/Test2::Manual::Tooling::Testing">Test2::Manual::Tooling::Testing</a> - Tutorial on how to test your testing tools.</dt> <dd> <p>NAME Test2::Manual::<i><b>Tooling</b></i>::Testing - Tutorial on how to test your testing <i><b>tools</b></i>. ... Test2::<i><b>Tools</b></i>::HarnessTester The Test2::<i><b>Tools</b></i>::HarnessTester can export the summarize_events() <i><b>tool</b></i>.</p> </dd> <dt id="Test2::Tools::Tiny-Tiny-set-of-tools-for-unfortunate-souls-who-cannot-use-Test2::Suite."><a id="Test216"></a><a id="Test2::Tools::Tiny---Tiny-set-of-tools-for-unfortunate-souls-who-cannot-use-Test2::Suite"></a><a href="/Test2::Tools::Tiny">Test2::Tools::Tiny</a> - Tiny set of tools for unfortunate souls who cannot use Test2::Suite.</dt> <dd> <p>NAME Test2::<i><b>Tools</b></i>::Tiny - Tiny set of <i><b>tools</b></i> for unfortunate souls who cannot use Test2::Suite. ... This package is some very basic essential <i><b>tools</b></i> implemented using Test2.</p> </dd> <dt id="Test2::Tools::ClassicCompare-Classic-(Test::More-style)-comparison-tools."><a id="Test217"></a><a id="Test2::Tools::ClassicCompare---Classic-Test::More-style-comparison-tools"></a><a href="/Test2::Tools::ClassicCompare">Test2::Tools::ClassicCompare</a> - Classic (Test::More style) comparison tools.</dt> <dd> <p>NAME Test2::<i><b>Tools</b></i>::ClassicCompare - Classic (Test::More style) comparison <i><b>tools</b></i>. ... This is the same as Test2::<i><b>Tools</b></i>::Compare::is().</p> </dd> <dt id="Test2::Tools::Subtest-Tools-for-writing-subtests"><a id="Test218"></a><a id="Test2::Tools::Subtest---Tools-for-writing-subtests"></a><a href="/Test2::Tools::Subtest">Test2::Tools::Subtest</a> - Tools for writing subtests</dt> <dd> <p>NAME Test2::<i><b>Tools</b></i>::Subtest - <i><b>Tools</b></i> for writing subtests DESCRIPTION This package exports subs that ... SYNOPSIS BUFFERED use Test2::<i><b>Tools</b></i>::Subtest qw/subtest_buffered/; subtest_buffered my_test => sub</p> </dd> <dt id="Test2::Manual::Tooling::Nesting-Tutorial-for-using-other-tools-within-your-own."><a id="Test219"></a><a id="Test2::Manual::Tooling::Nesting---Tutorial-for-using-other-tools-within-your-own"></a><a href="/Test2::Manual::Tooling::Nesting">Test2::Manual::Tooling::Nesting</a> - Tutorial for using other tools within your own.</dt> <dd> <p>NAME Test2::Manual::<i><b>Tooling</b></i>::Nesting - Tutorial for using other <i><b>tools</b></i> within your own. ... over, in such cases you may want to encapsulate the logic in a new test function that calls several <i><b>tools</b></i></p> </dd> </dl> <p><i>More results found. Refine your search terms or <a href="https://perldoc.perl.org/search?q=tools&limit=0&type=pods">show all documentation results</a>.</i></p> <h2 id="Perldeltas"><a class="permalink" href="#Perldeltas">#</a>Perldeltas</h2> <dl> <dt id=""Core-modules-and-tools-no-longer-search-"."-for-optional-modules"-in-perl5241delta"><a id="Core-modules-and-tools-no-longer-search-.-for-optional-modules-in-perl5241delta"></a><a href="/perl5241delta#Core-modules-and-tools-no-longer-search-%22.%22-for-optional-modules">"Core modules and tools no longer search "." for optional modules" in perl5241delta</a></dt> <dd> <p>Core modules and <i><b>tools</b></i> no longer search "." for optional modules The <i><b>tools</b></i> and many modules supplied</p> </dd> <dt id=""Core-modules-and-tools-no-longer-search-"."-for-optional-modules"-in-perl5223delta"><a id="Core-modules-and-tools-no-longer-search-.-for-optional-modules-in-perl5223delta"></a><a href="/perl5223delta#Core-modules-and-tools-no-longer-search-%22.%22-for-optional-modules">"Core modules and tools no longer search "." for optional modules" in perl5223delta</a></dt> <dd> <p>Core modules and <i><b>tools</b></i> no longer search "." for optional modules The <i><b>tools</b></i> and many modules supplied</p> </dd> <dt id=""Incompatible-Changes"-in-perl584delta"><a id="Incompatible-Changes-in-perl584delta"></a><a href="/perl584delta#Incompatible-Changes">"Incompatible Changes" in perl584delta</a></dt> <dd> <p><i><b>tools</b></i> which perform detailed parsing of Carp output. ... This might just confuse non-robust <i><b>tools</b></i> which parse the output of modules such as Devel::Peek.</p> </dd> <dt id=""New-Modules-and-Pragmata"-in-perl5400delta"><a id="New-Modules-and-Pragmata-in-perl5400delta"></a><a href="/perl5400delta#New-Modules-and-Pragmata">"New Modules and Pragmata" in perl5400delta</a></dt> <dd> <p>This distribution contains a comprehensive set of test <i><b>tools</b></i> for writing unit tests. ... Its inclusion in the Perl core means that CPAN module tests can be written using this suite of <i><b>tools</b></i></p> </dd> <dt id=""Modules-and-Pragmata"-in-perl5400delta"><a id="Modules-and-Pragmata-in-perl5400delta"></a><a href="/perl5400delta#Modules-and-Pragmata">"Modules and Pragmata" in perl5400delta</a></dt> <dd> <p>This distribution contains a comprehensive set of test <i><b>tools</b></i> for writing unit tests. ... Its inclusion in the Perl core means that CPAN module tests can be written using this suite of <i><b>tools</b></i></p> </dd> <dt id=""h2xs"-in-perl56delta"><a id="h2xs-in-perl56delta"></a><a href="/perl56delta#h2xs">"h2xs" in perl56delta</a></dt> <dd> <p>h2xs The h2xs <i><b>tool</b></i> can now work in conjunction with C::Scan (available from CPAN) to automatically parse</p> </dd> <dt id=""h2xs"-in-perl561delta"><a id="h2xs-in-perl561delta"></a><a href="/perl561delta#h2xs">"h2xs" in perl561delta</a></dt> <dd> <p>h2xs The h2xs <i><b>tool</b></i> can now work in conjunction with C::Scan (available from CPAN) to automatically parse</p> </dd> <dt id=""suidperl-less-insecure"-in-perl587delta"><a id="suidperl-less-insecure-in-perl587delta"></a><a href="/perl587delta#suidperl-less-insecure">"suidperl less insecure" in perl587delta</a></dt> <dd> <p>new projects the core perl team strongly recommends that you use dedicated, single purpose security <i><b>tools</b></i></p> </dd> <dt id=""VOS-(Stratus)"-in-perl58delta"><a id="VOS-Stratus-in-perl58delta"></a><a href="/perl58delta#VOS-(Stratus)">"VOS (Stratus)" in perl58delta</a></dt> <dd> <p>(Stratus) When Perl is built using the native build process on VOS Release 14.5.0 and GNU C++/GNU <i><b>Tools</b></i></p> </dd> <dt id=""Modules-and-Pragmata"-in-perl586delta"><a id="Modules-and-Pragmata-in-perl586delta"></a><a href="/perl586delta#Modules-and-Pragmata">"Modules and Pragmata" in perl586delta</a></dt> <dd> <p>Cwd upgraded to version 3.01 (as part of the new Path<i><b>Tools</b></i> distribution) Devel::PPPort upgraded to version ... 3.03 File::Spec upgraded to version 3.01 (as part of the new Path<i><b>Tools</b></i> distribution) Encode upgraded</p> </dd> <dt id=""perlhacktips"-in-perl5400delta"><a id="perlhacktips-in-perl5400delta"></a><a href="/perl5400delta#perlhacktips">"perlhacktips" in perl5400delta</a></dt> <dd> <p>) and sv_sweep_arenas() (which only exist on DEBUGGING builds) Added brief documentation for some <i><b>tools</b></i></p> </dd> <dt id=""Win32"-in-perl5004delta"><a id="Win32-in-perl5004delta"></a><a href="/perl5004delta#Win32">"Win32" in perl5004delta</a></dt> <dd> <p>This port includes support for perl extension building <i><b>tools</b></i> like ExtUtils::MakeMaker and h2xs, so that ... Cygwin32 is a set of GNU <i><b>tools</b></i> that make it possible to compile and run many Unix programs under Windows</p> </dd> <dt id=""Platform-Specific-Notes"-in-perl5142delta"><a id="Platform-Specific-Notes-in-perl5142delta"></a><a href="/perl5142delta#Platform-Specific-Notes">"Platform-Specific Notes" in perl5142delta</a></dt> <dd> <p>on OS X 10.7 Lion and Xcode 4 works again The build system has been updated to work with the build <i><b>tools</b></i></p> </dd> <dt id="""$!"-text-is-now-in-English-outside-the-scope-of-use-locale"-in-perl5220delta"><a id="text-is-now-in-English-outside-the-scope-of-use-locale-in-perl5220delta"></a><a href="/perl5220delta#%22%24!%22-text-is-now-in-English-outside-the-scope-of-use-locale">""$!" text is now in English outside the scope of use locale" in perl5220delta</a></dt> <dd> <p>It's better to display text that is translatable via some <i><b>tool</b></i> than garbage text which is much harder</p> </dd> <dt id=""New-Platforms"-in-perl5005delta"><a id="New-Platforms-in-perl5005delta"></a><a href="/perl5005delta#New-Platforms">"New Platforms" in perl5005delta</a></dt> <dd> <p>DOS is now supported under the DJGPP <i><b>tools</b></i>. See README.dos (installed as perldos on some systems).</p> </dd> <dt id=""Some-uses-of-unescaped-"{"-in-regexes-are-no-longer-fatal"-in-perl5280delta"><a id="Some-uses-of-unescaped-in-regexes-are-no-longer-fatal-in-perl5280delta"></a><a href="/perl5280delta#Some-uses-of-unescaped-%22%7B%22-in-regexes-are-no-longer-fatal">"Some uses of unescaped "{" in regexes are no longer fatal" in perl5280delta</a></dt> <dd> <p>That <i><b>tool</b></i> is heavily depended upon, and continues to use the deprecated usage.</p> </dd> <dt id=""Removal-of-the-bytecode-compiler-and-of-perlcc"-in-perl5100delta"><a id="Removal-of-the-bytecode-compiler-and-of-perlcc-in-perl5100delta"></a><a href="/perl5100delta#Removal-of-the-bytecode-compiler-and-of-perlcc">"Removal of the bytecode compiler and of perlcc" in perl5100delta</a></dt> <dd> <p>Those experimental <i><b>tools</b></i> have never worked reliably, and, due to the lack of volunteers to keep them</p> </dd> <dt id=""Known-Problems"-in-perl583delta"><a id="Known-Problems-in-perl583delta"></a><a href="/perl583delta#Known-Problems">"Known Problems" in perl583delta</a></dt> <dd> <p>You are advised to replace use of suidperl with <i><b>tools</b></i> such as sudo ( http://www.courtesan.com/sudo/ )</p> </dd> <dt id=""suidperl-less-insecure"-in-perl584delta"><a id="suidperl-less-insecure-in-perl584delta"></a><a href="/perl584delta#suidperl-less-insecure">"suidperl less insecure" in perl584delta</a></dt> <dd> <p>projects the core perl team would strongly recommend that you use dedicated, single purpose security <i><b>tools</b></i></p> </dd> <dt id=""Updating-of-links"-in-perl5320delta"><a id="Updating-of-links-in-perl5320delta"></a><a href="/perl5320delta#Updating-of-links">"Updating of links" in perl5320delta</a></dt> <dd> <p>Some links to OS/2 libraries, Address Sanitizer and other system <i><b>tools</b></i> had gone stale.</p> </dd> </dl> <p><i>More results found. Refine your search terms or <a href="https://perldoc.perl.org/search?q=tools&limit=0&type=perldeltas">show all perldelta results</a>.</i></p> </div> <div id="footer"> <p>Perldoc Browser is maintained by Dan Book (<a href="https://metacpan.org/author/DBOOK">DBOOK</a>). Please contact him via the <a href="https://github.com/Grinnz/perldoc-browser/issues">GitHub issue tracker</a> or <a href="mailto:dbook@cpan.org">email</a> regarding any issues with the site itself, search, or rendering of documentation.</p> <p>The Perl documentation is maintained by the Perl 5 Porters in the development of Perl. Please contact them via the <a href="https://github.com/Perl/perl5/issues">Perl issue tracker</a>, the <a href="https://lists.perl.org/list/perl5-porters.html">mailing list</a>, or <a href="https://kiwiirc.com/client/irc.perl.org/p5p">IRC</a> to report any issues with the contents or format of the documentation.</p> </div> </div> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.slim.min.js" integrity="sha512-/DXTXr6nQodMUiq+IUJYCt2PPOUjrHJ9wFrqpJ3XkgPNOZVfMok7cRw6CSxyCQxXn6ozlESsSh1/sMCTF1rL/g==" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.1/umd/popper.min.js" integrity="sha512-ubuT8Z88WxezgSqf3RLuNi5lmjstiJcyezx34yIU2gAHonIi27Na7atqzUZCOoY4CExaoFumzOsFQ2Ch+I/HCw==" crossorigin="anonymous"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js" integrity="sha384-B4gt1jrGC7Jh4AgTPSdUtOBvfO8shuf57BaghqFfPlYxofvL8/KUEfYiJOMMV+rV" crossorigin="anonymous"></script> <script src="/highlight.pack.js"></script> <script>hljs.highlightAll();</script> </body> </html>