CINXE.COM
less - perl pragma to request less of something - 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>less - perl pragma to request less of something - Perldoc Browser</title> <link rel="search" href="/opensearch.xml" type="application/opensearchdescription+xml" title="Perldoc Browser"> <link rel="canonical" href="https://perldoc.perl.org/less"> <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="/"><img src="/images/perl_camel_30.png" width="30" height="30" class="d-inline-block align-top" alt="Perl Camel Logo"> 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.38.3</a> <div class="dropdown-menu" aria-labelledby="dropdownlink-stable"> <a class="dropdown-item" href="/less">Latest</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.40.1/less">5.40.1</a> <a class="dropdown-item" href="/5.40.0/less">5.40.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item active" href="/5.38.3/less">5.38.3</a> <a class="dropdown-item" href="/5.38.2/less">5.38.2</a> <a class="dropdown-item" href="/5.38.1/less">5.38.1</a> <a class="dropdown-item" href="/5.38.0/less">5.38.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.36.3/less">5.36.3</a> <a class="dropdown-item" href="/5.36.2/less">5.36.2</a> <a class="dropdown-item" href="/5.36.1/less">5.36.1</a> <a class="dropdown-item" href="/5.36.0/less">5.36.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.34.3/less">5.34.3</a> <a class="dropdown-item" href="/5.34.2/less">5.34.2</a> <a class="dropdown-item" href="/5.34.1/less">5.34.1</a> <a class="dropdown-item" href="/5.34.0/less">5.34.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.32.1/less">5.32.1</a> <a class="dropdown-item" href="/5.32.0/less">5.32.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.30.3/less">5.30.3</a> <a class="dropdown-item" href="/5.30.2/less">5.30.2</a> <a class="dropdown-item" href="/5.30.1/less">5.30.1</a> <a class="dropdown-item" href="/5.30.0/less">5.30.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.28.3/less">5.28.3</a> <a class="dropdown-item" href="/5.28.2/less">5.28.2</a> <a class="dropdown-item" href="/5.28.1/less">5.28.1</a> <a class="dropdown-item" href="/5.28.0/less">5.28.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.26.3/less">5.26.3</a> <a class="dropdown-item" href="/5.26.2/less">5.26.2</a> <a class="dropdown-item" href="/5.26.1/less">5.26.1</a> <a class="dropdown-item" href="/5.26.0/less">5.26.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.24.4/less">5.24.4</a> <a class="dropdown-item" href="/5.24.3/less">5.24.3</a> <a class="dropdown-item" href="/5.24.2/less">5.24.2</a> <a class="dropdown-item" href="/5.24.1/less">5.24.1</a> <a class="dropdown-item" href="/5.24.0/less">5.24.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.22.4/less">5.22.4</a> <a class="dropdown-item" href="/5.22.3/less">5.22.3</a> <a class="dropdown-item" href="/5.22.2/less">5.22.2</a> <a class="dropdown-item" href="/5.22.1/less">5.22.1</a> <a class="dropdown-item" href="/5.22.0/less">5.22.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.20.3/less">5.20.3</a> <a class="dropdown-item" href="/5.20.2/less">5.20.2</a> <a class="dropdown-item" href="/5.20.1/less">5.20.1</a> <a class="dropdown-item" href="/5.20.0/less">5.20.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.18.4/less">5.18.4</a> <a class="dropdown-item" href="/5.18.3/less">5.18.3</a> <a class="dropdown-item" href="/5.18.2/less">5.18.2</a> <a class="dropdown-item" href="/5.18.1/less">5.18.1</a> <a class="dropdown-item" href="/5.18.0/less">5.18.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.16.3/less">5.16.3</a> <a class="dropdown-item" href="/5.16.2/less">5.16.2</a> <a class="dropdown-item" href="/5.16.1/less">5.16.1</a> <a class="dropdown-item" href="/5.16.0/less">5.16.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.14.4/less">5.14.4</a> <a class="dropdown-item" href="/5.14.3/less">5.14.3</a> <a class="dropdown-item" href="/5.14.2/less">5.14.2</a> <a class="dropdown-item" href="/5.14.1/less">5.14.1</a> <a class="dropdown-item" href="/5.14.0/less">5.14.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.12.5/less">5.12.5</a> <a class="dropdown-item" href="/5.12.4/less">5.12.4</a> <a class="dropdown-item" href="/5.12.3/less">5.12.3</a> <a class="dropdown-item" href="/5.12.2/less">5.12.2</a> <a class="dropdown-item" href="/5.12.1/less">5.12.1</a> <a class="dropdown-item" href="/5.12.0/less">5.12.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.10.1/less">5.10.1</a> <a class="dropdown-item" href="/5.10.0/less">5.10.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.8.9/less">5.8.9</a> <a class="dropdown-item" href="/5.8.8/less">5.8.8</a> <a class="dropdown-item" href="/5.8.7/less">5.8.7</a> <a class="dropdown-item" href="/5.8.6/less">5.8.6</a> <a class="dropdown-item" href="/5.8.5/less">5.8.5</a> <a class="dropdown-item" href="/5.8.4/less">5.8.4</a> <a class="dropdown-item" href="/5.8.3/less">5.8.3</a> <a class="dropdown-item" href="/5.8.2/less">5.8.2</a> <a class="dropdown-item" href="/5.8.1/less">5.8.1</a> <a class="dropdown-item" href="/5.8.0/less">5.8.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.6.2/less">5.6.2</a> <a class="dropdown-item" href="/5.6.1/less">5.6.1</a> <a class="dropdown-item" href="/5.6.0/less">5.6.0</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.005_04/less">5.005_04</a> <a class="dropdown-item" href="/5.005_03/less">5.005_03</a> <a class="dropdown-item" href="/5.005_02/less">5.005_02</a> <a class="dropdown-item" href="/5.005_01/less">5.005_01</a> <a class="dropdown-item" href="/5.005/less">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/less">blead</a> <a class="dropdown-item" href="/5.41.9/less">5.41.9</a> <a class="dropdown-item" href="/5.41.8/less">5.41.8</a> <a class="dropdown-item" href="/5.41.7/less">5.41.7</a> <a class="dropdown-item" href="/5.41.6/less">5.41.6</a> <a class="dropdown-item" href="/5.41.5/less">5.41.5</a> <a class="dropdown-item" href="/5.41.4/less">5.41.4</a> <a class="dropdown-item" href="/5.41.3/less">5.41.3</a> <a class="dropdown-item" href="/5.41.2/less">5.41.2</a> <a class="dropdown-item" href="/5.41.1/less">5.41.1</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.40.1-RC1/less">5.40.1-RC1</a> <a class="dropdown-item" href="/5.40.0-RC2/less">5.40.0-RC2</a> <a class="dropdown-item" href="/5.40.0-RC1/less">5.40.0-RC1</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.39.10/less">5.39.10</a> <a class="dropdown-item" href="/5.39.9/less">5.39.9</a> <a class="dropdown-item" href="/5.39.8/less">5.39.8</a> <a class="dropdown-item" href="/5.39.7/less">5.39.7</a> <a class="dropdown-item" href="/5.39.6/less">5.39.6</a> <a class="dropdown-item" href="/5.39.5/less">5.39.5</a> <a class="dropdown-item" href="/5.39.4/less">5.39.4</a> <a class="dropdown-item" href="/5.39.3/less">5.39.3</a> <a class="dropdown-item" href="/5.39.2/less">5.39.2</a> <a class="dropdown-item" href="/5.39.1/less">5.39.1</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.38.3-RC1/less">5.38.3-RC1</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="/5.38.3/perl">Perl</a> <a class="dropdown-item" href="/5.38.3/perlintro">Intro</a> <a class="dropdown-item" href="/5.38.3/perl#Tutorials">Tutorials</a> <a class="dropdown-item" href="/5.38.3/perlfaq">FAQs</a> <a class="dropdown-item" href="/5.38.3/perl#Reference-Manual">Reference</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.38.3/perlop">Operators</a> <a class="dropdown-item" href="/5.38.3/functions">Functions</a> <a class="dropdown-item" href="/5.38.3/variables">Variables</a> <a class="dropdown-item" href="/5.38.3/modules">Modules</a> <a class="dropdown-item" href="/5.38.3/perlutil">Utilities</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="/5.38.3/perldelta">Release Notes</a> <a class="dropdown-item" href="/5.38.3/perlcommunity">Community</a> <a class="dropdown-item" href="/5.38.3/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="/5.38.3/search"> <input class="form-control mr-3" type="search" name="q" placeholder="Search" aria-label="Search" value=""> </form> </div> </nav> <div id="wrapperlicious" class="container-fluid"> <div id="perldocdiv"> <div id="links"> <a href="/5.38.3/less">less</a> <div id="more"> (<a href="/5.38.3/less.txt">source</a>, <a href="https://metacpan.org/pod/less">CPAN</a>) </div> <div id="moduleversion">version 0.03</div> </div> <div class="leading-notice"> You are viewing the version of this documentation from Perl 5.38.3. <a href="/less">View the latest version</a> </div> <h1><a id="toc">CONTENTS</a></h1> <ul> <li> <a class="text-decoration-none" href="#NAME">NAME</a> </li> <li> <a class="text-decoration-none" href="#SYNOPSIS">SYNOPSIS</a> </li> <li> <a class="text-decoration-none" href="#DESCRIPTION">DESCRIPTION</a> </li> <li> <a class="text-decoration-none" href="#FOR-MODULE-AUTHORS">FOR MODULE AUTHORS</a> <ul> <li> <a class="text-decoration-none" href="#BOOLEAN-=-less-%3Eof(-FEATURE-)">BOOLEAN = less->of( FEATURE )</a> </li> <li> <a class="text-decoration-none" href="#FEATURES-=-less-%3Eof()">FEATURES = less->of()</a> </li> </ul> </li> <li> <a class="text-decoration-none" href="#CAVEATS">CAVEATS</a> </li> </ul> <h1 id="NAME"><a class="permalink" href="#NAME">#</a>NAME</h1> <p>less - perl pragma to request less of something</p> <h1 id="SYNOPSIS"><a class="permalink" href="#SYNOPSIS">#</a>SYNOPSIS</h1> <pre><code>use less 'CPU';</code></pre> <h1 id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">#</a>DESCRIPTION</h1> <p>This is a user-pragma. If you're very lucky some code you're using will know that you asked for less CPU usage or ram or fat or... we just can't know. Consult your documentation on everything you're currently using.</p> <p>For general suggestions, try requesting <code>CPU</code> or <code>memory</code>.</p> <pre><code>use less 'memory'; use less 'CPU'; use less 'fat';</code></pre> <p>If you ask for nothing in particular, you'll be asking for <code>less 'please'</code>.</p> <pre><code>use less 'please';</code></pre> <h1 id="FOR-MODULE-AUTHORS"><a class="permalink" href="#FOR-MODULE-AUTHORS">#</a><a id="FOR"></a>FOR MODULE AUTHORS</h1> <p><a href="/5.38.3/less">less</a> has been in the core as a "joke" module for ages now and it hasn't had any real way to communicating any information to anything. Thanks to Nicholas Clark we have user pragmas (see <a href="/5.38.3/perlpragma">perlpragma</a>) and now <code>less</code> can do something.</p> <p>You can probably expect your users to be able to guess that they can request less CPU or memory or just "less" overall.</p> <p>If the user didn't specify anything, it's interpreted as having used the <code>please</code> tag. It's up to you to make this useful.</p> <pre><code># equivalent use less; use less 'please';</code></pre> <h2 id="BOOLEAN-=-less->of(-FEATURE-)"><a class="permalink" href="#BOOLEAN-=-less-%3Eof(-FEATURE-)">#</a><a id="BOOLEAN"></a><a id="BOOLEAN-less-of-FEATURE"></a><code>BOOLEAN = less->of( FEATURE )</code></h2> <p>The class method <code>less->of( NAME )</code> returns a boolean to tell you whether your user requested less of something.</p> <pre><code>if ( less->of( 'CPU' ) ) { ... } elsif ( less->of( 'memory' ) ) { }</code></pre> <h2 id="FEATURES-=-less->of()"><a class="permalink" href="#FEATURES-=-less-%3Eof()">#</a><a id="FEATURES"></a><a id="FEATURES-less-of"></a><code>FEATURES = less->of()</code></h2> <p>If you don't ask for any feature, you get the list of features that the user requested you to be nice to. This has the nice side effect that if you don't respect anything in particular then you can just ask for it and use it like a boolean.</p> <pre><code>if ( less->of ) { ... } else { ... }</code></pre> <h1 id="CAVEATS"><a class="permalink" href="#CAVEATS">#</a>CAVEATS</h1> <dl> <dt id="This-probably-does-nothing."><a class="permalink" href="#This-probably-does-nothing.">#</a><a id="This"></a><a id="This-probably-does-nothing"></a>This probably does nothing.</dt> <dd> </dd> <dt id="This-works-only-on-5.10+"><a class="permalink" href="#This-works-only-on-5.10+">#</a><a id="This1"></a><a id="This-works-only-on-5.10"></a>This works only on 5.10+</dt> <dd> <p>At least it's backwards compatible in not doing much.</p> </dd> </dl> </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="/js/highlight.pack.js"></script> <script>hljs.highlightAll();</script> </body> </html>