CINXE.COM
public - Add public data members to Perl classes - metacpan.org
<!DOCTYPE html> <html lang="en-US"> <head> <title>public - Add public data members to Perl classes - metacpan.org</title> <link rel="preload" as="fetch" href="/account/login_status" crossorigin="anonymous" /> <link href="/assets/style-XFEQ536G.css" rel="stylesheet" type="text/css"> <script src="/assets/main-WXBSEDQJ.js" type="module"></script> <link rel="alternate" type="application/rss+xml" title="Recent CPAN Uploads of Class-Fields - MetaCPAN" href="/dist/Class-Fields/releases.rss" /> <link rel="canonical" href="https://metacpan.org/pod/public" /> <meta name="description" content="Add public data members to Perl classes" /> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=5"> <link rel="shortcut icon" href="/static/icons/favicon.ico"> <link rel="apple-touch-icon" sizes="152x152" href="/static/icons/apple-touch-icon.png"> <link rel="search" href="/static/opensearch.xml" type="application/opensearchdescription+xml" title="MetaCPAN"> <script async src="https://perl-ads.perlhacks.com/perl-ads.js"></script> <script async src="https://www.googletagmanager.com/gtag/js?id=G-E82Q2V8LVD"></script> <meta property="og:site_name" content="MetaCPAN" /> <meta name="twitter:site" content="@metacpan" /> <meta property="og:type" content="article" /> <meta name="twitter:card" content="summary" /> <meta property="og:url" content="https://metacpan.org/pod/public" /> <meta property="og:title" content="public" /> <meta property="og:description" content="Add public data members to Perl classes" /> <meta property="og:image" content="https://metacpan.org/static/images/dots.png" /> </head> <body> <nav class="navbar navbar-default" role="navigation"> <div class="header-logo-large hidden-xs"> <a href="/" tabindex="0"> <svg class="logo" aria-label="MetaCPAN"> <use class="logo" href="/static/images/metacpan-logo.svg#logo" /> </svg> </a> </div> <div class="header-logo-icon visible-xs"> <a href="/"> <svg class="logo" aria-label="MetaCPAN"> <use class="logo" href="/static/images/metacpan-logo.svg#dots" /> </svg> </a> </div> <ul class="nav navbar-nav menu-items hidden-xs hidden-sm"> <li><a href="/about">About</a></li> <li><a href="/about/sponsors">Sponsor</a></li> <li><a href="https://grep.metacpan.org/">grep::cpan</a></li> <li><a href="/recent">Recent</a></li> <li><a href="/about/faq">FAQ</a></li> <li><a href="/tools">Tools</a></li> <li><a href="https://fastapi.metacpan.org/">API</a></li> </ul> <ul class="nav navbar-nav navbar-right"> <button type="button" class="searchbar-btn visible-xs visible-sm"> <i class="fa fa-search button-fa-icon"></i> </button> <form action="/search" class="searchbar-form visible-md visible-lg search-form form-horizontal"> <input type="hidden" name="size" id="metacpan_search-size" value="20"> <div class="form-group"> <div class="search-group"> <i class="fa fa-search"></i> <input type="text" name="q" placeholder="Search the CPAN" size="41" autocorrect="off" autocapitalize="off" spellcheck="false" id="metacpan_search-input" class="form-control" value=""> </div> </div> </form> <li class="icon-slidepanel visible-xs visible-sm"> <button data-toggle="slidepanel" data-target=".slidepanel"> <span class="button-fa-icon"> <i class="fa fa-bars slidepanel-open"></i> <i class="fa fa-times slidepanel-close"></i> </span> </button> </li> <li class="dropdown login-dropdown show-logged-in"> <button type="button" class="dropdown-toggle" data-toggle="dropdown"> <i class="fa fa-user button-fa-icon logged-in-icon" aria-hidden="true"></i> <i class="fas fa-chevron-down"></i> </button> <ul class="dropdown-menu"> <li><a href="/account/identities">Identities</a></li> <li><a href="/account/profile">Profile</a></li> <li><a href="/account/favorite/list">Favorites</a></li> <li> <a href="#" type="button" class="logout-button"> Logout </a> </li> </ul> </li> <li class="dropdown login-dropdown show-logged-out"> <button type="button" class="dropdown-toggle" data-toggle="dropdown"> <i class="fa fa-user button-fa-icon avatar-placeholder" aria-hidden="true"></i> <i class="fas fa-chevron-down"></i> </button> <ul class="dropdown-menu"> <li> <a href="/login/github"> <i class="fab fa-github fa-fw"></i> GitHub </a> </li> <li> <a href="/login/twitter"> <i class="fab fa-twitter fa-fw"></i> Twitter </a> </li> <li> <a href="/login/google"> <i class="fab fa-google fa-fw"></i> Google </a> </li> </ul> </li> <li class="dropdown login-dropdown hide-logged-in hide-logged-out"> <button> <i class="fa fa-user button-fa-icon" aria-hidden="true"></i> </button> </li> </ul> </nav> <div class="page-content "> <div id="perl-ad-target" class="top-notify-banner perl-ad-target"> </div> <nav class="sidebar"> <div class="slidepanel"> <ul class="nav-list "> <li class="nav-header no-margin-top"> <div class="ttip" data-toggle="tooltip" data-placement="bottom" title="The date that this version of Class-Fields was released."> <span class="relatize">05 Feb 2011 03:35:20 UTC</span> </div> </li> <li> Distribution: <a href="/dist/Class-Fields">Class-Fields</a> </li> <li> Module version: 0.04 </li> <li> <a data-keyboard-shortcut="g s" href="/dist/Class-Fields/source/lib/public.pm">Source</a> (<a href="/dist/Class-Fields/source/lib/public.pm?raw=1">raw</a>) </li> <li> <a data-keyboard-shortcut="g b" href="/dist/Class-Fields/source/lib">Browse</a> (<a href="/dist/Class-Fields/source/lib?raw=1">raw</a>) </li> <li> <a data-keyboard-shortcut="g c" href="/dist/Class-Fields/changes">Changes</a> </li> <li> <a class="nopopup" href="/dist/Class-Fields/contribute">How to Contribute</a> </li> <li> <a rel="noopener nofollow" data-keyboard-shortcut="g i" href="https://rt.cpan.org/Public/Dist/Display.html?Name=Class-Fields">Issues</a> (0) </li> <li> <a rel="noopener nofollow" href="http://matrix.cpantesters.org/?dist=Class-Fields+0.204" title="Matrix">Testers</a> <span title="(pass / fail / na)">(<a rel="noopener nofollow" href="https://www.cpantesters.org/distro/C/Class-Fields.html?oncpan=1&distmat=1&version=0.204&grade=2" style="color: #090">63</a> / <a rel="noopener nofollow" href="https://www.cpantesters.org/distro/C/Class-Fields.html?oncpan=1&distmat=1&version=0.204&grade=3" style="color: #900">0</a> / <a rel="noopener nofollow" href="https://www.cpantesters.org/distro/C/Class-Fields.html?oncpan=1&distmat=1&version=0.204&grade=4">0</a>)</span> </li> <li> <a rel="noopener nofollow" href="http://cpants.cpanauthors.org/release/MSCHWERN/Class-Fields-0.204">Kwalitee</a> </li> <li> <div class="ttip" data-toggle="tooltip" data-placement="bottom" title="The # people with an indexing permission on Class-Fields who have released something to CPAN in the last 2 years (i.e. the # people likely able to release critical fixes in a timely manner)"> Bus factor: 0 </div> </li> <li> <a rel="noopener nofollow" href="http://cpancover.com/latest/Class-Fields-0.204/index.html">78.80% Coverage </a> </li> <li> License: perl_5 </li> <li class="nav-header">Activity</li> <li> <div class="activity-graph"> <img src="/dist/Class-Fields/activity.svg?res=month" /> <div class="comment">24 month</div> </div> </li> <li class="nav-header">Tools</li> <li> <a itemprop="downloadUrl" href="https://cpan.metacpan.org/authors/id/M/MS/MSCHWERN/Class-Fields-0.204.tar.gz"> Download (<span itemprop="fileSize">15.32KB</span>)</a> </li> <li> <a href="https://explorer.metacpan.org/?url=%2Fmodule%2FMSCHWERN%2FClass-Fields-0.204%2Flib%2Fpublic.pm"> MetaCPAN Explorer </a> </li> <li> <a href="/dist/Class-Fields/permissions"> Permissions </a> </li> <li> <a href="/dist/Class-Fields/releases.rss"> Subscribe to distribution </a> </li> <li> <button class="btn btn-link" data-toggle="modal" data-target="#metacpan_install-instructions-dialog"> Install Instructions </button> </li> <li> <form action="/search"> <input type="hidden" name="q" value="dist:Class-Fields"> <input type="search" name="q" placeholder="Search distribution" class="form-control tool-bar-form"> <input type="submit" style="display: none"> </form> </li> <li> <form action="https://grep.metacpan.org/search"> <input type="hidden" name="qd" value="Class-Fields"> <input type="hidden" name="source" value="metacpan"> <input type="search" name="q" placeholder="grep distribution" class="form-control tool-bar-form"> <input type="submit" style="display: none"> </form> </li> <li class="version-jump"> <select class="select-navigator form-control tool-bar-form"> <option disabled selected>Jump to version</option> <option disabled value="/release/MSCHWERN/Class-Fields-0.204/view/lib/public.pm" >0.204 (MSCHWERN on 2011-02-05)</option> <option value="/release/MSCHWERN/Class-Fields-0.203/view/lib/public.pm" >0.203 (MSCHWERN on 2007-09-08)</option> <option value="/release/MSCHWERN/Class-Fields-0.202/view/lib/public.pm" >0.202 (MSCHWERN on 2007-07-02)</option> <optgroup label="BackPAN">' <option value="/release/MSCHWERN/Class-Fields-0.201/view/lib/public.pm" >0.201 (MSCHWERN on 2003-08-28)</option> <option value="/release/MSCHWERN/Class-Fields-0.20/view/lib/public.pm" >0.20 (MSCHWERN on 2003-08-28)</option> <option value="/release/MSCHWERN/Class-Fields-0.16/view/lib/public.pm" >0.16 (MSCHWERN on 2003-07-10)</option> <option value="/release/MSCHWERN/Class-Fields-0.15/view/lib/public.pm" >0.15 (MSCHWERN on 2003-02-26)</option> <option value="/release/MSCHWERN/Class-Fields-0.14/view/lib/public.pm" >0.14 (MSCHWERN on 2001-08-24)</option> <option value="/release/MSCHWERN/Class-Fields-0.13/view/lib/public.pm" >0.13 (MSCHWERN on 2001-04-05)</option> <option value="/release/MSCHWERN/Class-Fields-0.12/view/lib/public.pm" >0.12 (MSCHWERN on 2001-04-02)</option> <option value="/release/MSCHWERN/Class-Fields-0.11/view/lib/public.pm" >0.11 (MSCHWERN on 2000-12-14)</option> <option value="/release/MSCHWERN/Class-Fields-0.10/view/lib/public.pm" >0.10 (MSCHWERN on 2000-07-19)</option> <option value="/release/MSCHWERN/Class-Fields-0.08/view/lib/public.pm" >0.08 (MSCHWERN on 2000-02-26)</option> <option value="/release/MSCHWERN/Class-Fields-0.06/view/lib/public.pm" >0.06 (MSCHWERN on 1999-12-16)</option> <option value="/release/MSCHWERN/Class-Fields-0.05/view/lib/public.pm" >0.05 (MSCHWERN on 1999-12-14)</option> </optgroup> </select> </li> <li class="version-diff"> <select class="select-navigator form-control tool-bar-form"> <option disabled selected>Diff with version</option> <option disabled value="/release/MSCHWERN/Class-Fields-0.204/diff/MSCHWERN/Class-Fields-0.204/lib/public.pm" >0.204 (MSCHWERN on 2011-02-05)</option> <option value="/release/MSCHWERN/Class-Fields-0.204/diff/MSCHWERN/Class-Fields-0.203/lib/public.pm" >0.203 (MSCHWERN on 2007-09-08)</option> <option value="/release/MSCHWERN/Class-Fields-0.204/diff/MSCHWERN/Class-Fields-0.202/lib/public.pm" >0.202 (MSCHWERN on 2007-07-02)</option> <optgroup label="BackPAN">' <option value="/release/MSCHWERN/Class-Fields-0.204/diff/MSCHWERN/Class-Fields-0.201/lib/public.pm" >0.201 (MSCHWERN on 2003-08-28)</option> <option value="/release/MSCHWERN/Class-Fields-0.204/diff/MSCHWERN/Class-Fields-0.20/lib/public.pm" >0.20 (MSCHWERN on 2003-08-28)</option> <option value="/release/MSCHWERN/Class-Fields-0.204/diff/MSCHWERN/Class-Fields-0.16/lib/public.pm" >0.16 (MSCHWERN on 2003-07-10)</option> <option value="/release/MSCHWERN/Class-Fields-0.204/diff/MSCHWERN/Class-Fields-0.15/lib/public.pm" >0.15 (MSCHWERN on 2003-02-26)</option> <option value="/release/MSCHWERN/Class-Fields-0.204/diff/MSCHWERN/Class-Fields-0.14/lib/public.pm" >0.14 (MSCHWERN on 2001-08-24)</option> <option value="/release/MSCHWERN/Class-Fields-0.204/diff/MSCHWERN/Class-Fields-0.13/lib/public.pm" >0.13 (MSCHWERN on 2001-04-05)</option> <option value="/release/MSCHWERN/Class-Fields-0.204/diff/MSCHWERN/Class-Fields-0.12/lib/public.pm" >0.12 (MSCHWERN on 2001-04-02)</option> <option value="/release/MSCHWERN/Class-Fields-0.204/diff/MSCHWERN/Class-Fields-0.11/lib/public.pm" >0.11 (MSCHWERN on 2000-12-14)</option> <option value="/release/MSCHWERN/Class-Fields-0.204/diff/MSCHWERN/Class-Fields-0.10/lib/public.pm" >0.10 (MSCHWERN on 2000-07-19)</option> <option value="/release/MSCHWERN/Class-Fields-0.204/diff/MSCHWERN/Class-Fields-0.08/lib/public.pm" >0.08 (MSCHWERN on 2000-02-26)</option> <option value="/release/MSCHWERN/Class-Fields-0.204/diff/MSCHWERN/Class-Fields-0.06/lib/public.pm" >0.06 (MSCHWERN on 1999-12-16)</option> <option value="/release/MSCHWERN/Class-Fields-0.204/diff/MSCHWERN/Class-Fields-0.05/lib/public.pm" >0.05 (MSCHWERN on 1999-12-14)</option> </optgroup> </select> </li> <li> <ul class="dependencies"> <li class="nav-header">Dependencies</li> <li><a href="/pod/Carp" title="Carp" class="ellipsis">Carp</a></li> <li><a href="/pod/Carp::Assert" title="Carp::Assert" class="ellipsis">Carp::Assert</a></li> <li><a href="/pod/Test::More" title="Test::More" class="ellipsis">Test::More</a></li> <li><a href="/pod/base" title="base" class="ellipsis">base</a></li> <li><a href="/pod/constant" title="constant" class="ellipsis">constant</a></li> <li><i class="ttip" title="dynamic_config enabled">and possibly others</i></li> <li> <hr> </li> <li> <a href="/module/public/requires">Reverse dependencies</a> </li> <li> <a href="http://deps.cpantesters.org/?module=public">CPAN Testers List</a> </li> <li> <a href="https://cpandeps.grinnz.com/?dist=Class-Fields">Dependency graph</a> </li> </ul> </li> <li class="nav-header">Permalinks</li> <li> <a href="/release/MSCHWERN/Class-Fields-0.204/view/lib/public.pm">This version</a> </li> <li> <a href="/pod/public">Latest version</a> </li> <li> <div class="plussers"> <div class="nav-header">++ed by:</div> <div> 1 non-PAUSE user </div> </div> </li> <li> <div> <button class="contributors-show-button btn-link">and 1 contributors</button> <div id="metacpan_contributors" class="slide-out slide-out-hidden"> <div> <ul> <li class="contributor" data-contrib-email="schwern@pobox.com" > <img class="gravatar" width="20" height="20" src="https://www.gravatar.com/avatar/d41d8cd98f00b204e9800998ecf8427e?d=identicon&s=20" /> Michael G Schwern </li> </ul> </div> </div> </div> </li> </ul> </div> </nav> <div class="content-navigation"> <div class="breadcrumbs"> <span> <a data-keyboard-shortcut="g a" rel="author" href="/author/MSCHWERN" class="author-name">Michael G Schwern</a> </span> <span> / </span> <div class="release dist-release status-latest maturity-released"> <span class="dropdown"><b class="caret"></b></span> <select class="select-navigator "> <option selected value="/release/MSCHWERN/Class-Fields-0.204/view/lib/public.pm" >0.204 (MSCHWERN on 2011-02-05)</option> <option value="/release/MSCHWERN/Class-Fields-0.203/view/lib/public.pm" >0.203 (MSCHWERN on 2007-09-08)</option> <option value="/release/MSCHWERN/Class-Fields-0.202/view/lib/public.pm" >0.202 (MSCHWERN on 2007-07-02)</option> <optgroup label="BackPAN">' <option value="/release/MSCHWERN/Class-Fields-0.201/view/lib/public.pm" >0.201 (MSCHWERN on 2003-08-28)</option> <option value="/release/MSCHWERN/Class-Fields-0.20/view/lib/public.pm" >0.20 (MSCHWERN on 2003-08-28)</option> <option value="/release/MSCHWERN/Class-Fields-0.16/view/lib/public.pm" >0.16 (MSCHWERN on 2003-07-10)</option> <option value="/release/MSCHWERN/Class-Fields-0.15/view/lib/public.pm" >0.15 (MSCHWERN on 2003-02-26)</option> <option value="/release/MSCHWERN/Class-Fields-0.14/view/lib/public.pm" >0.14 (MSCHWERN on 2001-08-24)</option> <option value="/release/MSCHWERN/Class-Fields-0.13/view/lib/public.pm" >0.13 (MSCHWERN on 2001-04-05)</option> <option value="/release/MSCHWERN/Class-Fields-0.12/view/lib/public.pm" >0.12 (MSCHWERN on 2001-04-02)</option> <option value="/release/MSCHWERN/Class-Fields-0.11/view/lib/public.pm" >0.11 (MSCHWERN on 2000-12-14)</option> <option value="/release/MSCHWERN/Class-Fields-0.10/view/lib/public.pm" >0.10 (MSCHWERN on 2000-07-19)</option> <option value="/release/MSCHWERN/Class-Fields-0.08/view/lib/public.pm" >0.08 (MSCHWERN on 2000-02-26)</option> <option value="/release/MSCHWERN/Class-Fields-0.06/view/lib/public.pm" >0.06 (MSCHWERN on 1999-12-16)</option> <option value="/release/MSCHWERN/Class-Fields-0.05/view/lib/public.pm" >0.05 (MSCHWERN on 1999-12-14)</option> </optgroup> </select> <a data-keyboard-shortcut="g d" class="release-name" href="/dist/Class-Fields">Class-Fields-0.204</a> </div> <span class="river-gauge-gauge"> <svg width="24px" height="15px" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g> <title> River stage one • 5 direct dependents • 7 total dependents </title> <rect x="0" y="0" width="4" height="15" fill="#7ea3f2" /> <rect x="5" y="0" width="4" height="15" fill="#e4e2e2" /> <rect x="10" y="0" width="4" height="15" fill="#e4e2e2" /> <rect x="15" y="0" width="4" height="15" fill="#e4e2e2" /> <rect x="20" y="0" width="4" height="15" fill="#e4e2e2" /> </g> </svg> </span> <div id="Class-Fields-fav" class="show-logged-in"> <form action="/account/favorite/add" style="display: inline" method="POST"> <input type="hidden" name="remove" value="0"> <input type="hidden" name="release" value="Class-Fields-0.204"> <input type="hidden" name="author" value="MSCHWERN"> <input type="hidden" name="distribution" value="Class-Fields"> <button type="submit" class="favorite highlight"><span>1</span> ++</button> </form> </div> <div class="show-logged-out"> <button class="fav-not-logged-in favorite highlight"><span>1</span> ++</button> </div> / <span>public</span> </div> </div> <main class="content"> <input id="HANDOFF" type="checkbox" class="notification-toggle-checkbox" /> <div id="metacpan_notification" class="well collapsed notify-HANDOFF"> <label class="remove-notification" for="HANDOFF" > <i class="fa fa-fw fa-times black"></i> </label> <div id="metacpan_notification-container"> <h2>Take me over?</h2> <div> The maintainer of this distribution is looking for someone to take over! If you're interested then please contact them via <a href="mailto:mschwern@cpan.org?subject=Take%20over%20Class%3A%3AFields%3F&body=Hello%2C%0A%0AI%27m%20interested%20in%20taking%20over%20the%20Class%3A%3AFields%20module.%20If%20you%20can%20grant%20me%20the%20privilege%20I%20will%20release%20the%20next%20version.%0A%0A">email</a>. <a href="/about/faq#howtoadoptadistribution"><i class="fa fa-info-circle"></i></a> </div> </div> </div> <nav class="toc"> <div class="toc-header"><strong>Contents</strong></div> <ul> <li><a href="#NAME">NAME</a></li> <li><a href="#SYNOPSIS">SYNOPSIS</a></li> <li><a href="#DESCRIPTION">DESCRIPTION</a></li> <li><a href="#EXAMPLE">EXAMPLE</a></li> <li><a href="#MUSINGS">MUSINGS</a></li> <li><a href="#AUTHOR">AUTHOR</a></li> <li><a href="#SEE-ALSO">SEE ALSO</a></li> </ul></nav> <div class="pod anchors"> <h1 id="NAME">NAME</h1> <pre><code>public - Add public data members to Perl classes</code></pre> <h1 id="SYNOPSIS">SYNOPSIS</h1> <pre><code>package GI::Joe; use public qw( Name Rank Serial_Number ); # see the protected man page for an example of use</code></pre> <h1 id="DESCRIPTION">DESCRIPTION</h1> <dl> <dt id="Public-member."><a id="Public"></a><a id="Public-member"></a><i>Public member.</i></dt> <dd> <p>Externally visible data or functionality. An attribute or method that is directly accessable from scopes outside the class. In Perl, most members are, by their standard semantics, public. By convention, attributes of Perl classes are regarded as private, as are methods whose names begin with an underscore.</p> <p>From <b>"Object Oriented Perl"</b> by Damian Conway</p> </dd> </dl> <p>public.pm adds a list of keys as public data members to the current class. This is useful when using pseudo-hashes as objects, or for simply imposing a bit more structure on your Perl objects than is normally expected. It allows you to use the methods provided in Class::Fields.</p> <p>Public data members are those pieces of data which are expected to be regularly accessed by methods, functions and programs outside the class which owns them. They are also inherited by any subclasses.</p> <p>public.pm serves a subset of the functionality of fields.pm.</p> <pre><code>use public qw(Foo);</code></pre> <p>is almost exactly the same as:</p> <pre><code>use fields qw(Foo);</code></pre> <p>with the exception that you can (if you REALLY want to) do something like this:</p> <pre><code>use public qw(_Foo);</code></pre> <p>Whereas one cannot do this with fields.pm. (Note: This is considered unwise and public.pm will scream about it if you have Perl's warnings on.)</p> <p>Additionally, public.pm is a bit clearer in its intent and is not necessarily implying use of pseudo-hashes.</p> <h1 id="EXAMPLE">EXAMPLE</h1> <p>See <a href="/pod/protected#SYNOPSIS">"SYNOPSIS" in protected</a> for an example of use.</p> <h1 id="MUSINGS">MUSINGS</h1> <p>I fully expect public.pm to eventually mutate into a real pragma someday when a better formalized OO data system for Perl supplants the current fledgling pseudo-hashes.</p> <h1 id="AUTHOR">AUTHOR</h1> <p>Michae G Schwern <schwern@pobox.com></p> <h1 id="SEE-ALSO"><a id="SEE"></a>SEE ALSO</h1> <p><a href="/pod/private">private</a>, <a href="/pod/protected">protected</a>, <a href="/pod/fields">fields</a>, <a href="/pod/base">base</a>, <a href="/pod/Class::Fields">Class::Fields</a></p></div> <div id="metacpan_install-instructions-dialog" class="modal fade"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> <h4 class="modal-title">Module Install Instructions</h4> </div> <div class="modal-body"> <p>To install Class::Fields, copy and paste the appropriate command in to your terminal.</p> <p><a href="/dist/App-cpanminus/view/bin/cpanm">cpanm</a></p> <pre><code>cpanm Class::Fields</code></pre> <p><a href="/pod/CPAN">CPAN shell</a></p> <pre><code>perl -MCPAN -e shell install Class::Fields</code></pre> <p>For more information on module installation, please visit <a href="https://www.cpan.org/modules/INSTALL.html">the detailed CPAN module installation guide</a>.</p> </div> <div class="modal-footer"> <a href="#" data-dismiss="modal" class="btn">Close</a> </div> </div> </div> </div> </main> <div class="content-pagination"> </div> </div> <footer class="footer"> <div class="footer-container"> <div class="footer-social"> <div class="footer-link footer-logo"> <a href="/"> <img src="/static/images/metacpan-logo.svg" alt="MetaCPAN" /> </a> </div> <a class="footer-social-link" href="https://github.com/metacpan"> <i class="fab fa-github-square"></i> </a> <a class="footer-social-link" href="https://fosstodon.org/@metacpan"> <i class="fab fa-mastodon"></i> </a> </div> <div class="footer-links"> <div class="footer-link"> <a href="/about">About</a> </div> <div class="footer-link"> <a href="/about/sponsors">Sponsor</a> </div> <div class="footer-link"> <a href="https://grep.metacpan.org">grep::cpan</a> </div> <div class="footer-link"> <a href="/recent">Recent</a> </div> <div class="footer-link"> <a href="/about/faq">FAQ</a> </div> <div class="footer-link"> <a href="/tools">Tools</a> </div> <div class="footer-link"> <a href="https://fastapi.metacpan.org/">API</a> </div> <div class="footer-link"> <a href="https://www.perl.org/">Perl.org</a> </div> </div> <div class="footer-sponsors"> <a class="footer-sponsor-link" target="_blank" href="https://www.bytemark.co.uk/" rel="noopener"> <img class="footer-sponsor-bytemark" src="/static/images/sponsors/bytemark_logo.svg" alt="Bytemark logo"> </a> <a class="footer-sponsor-link" target="_blank" href="https://www.liquidweb.com/" rel="noopener"> <img class="footer-sponsor-liquidweb" src="/static/images/sponsors/liquidweb_logo.png" alt="liquidweb logo"> </a> <a class="footer-sponsor-link" target="_blank" href="https://deriv.com/careers/" rel="noopener"> <img class="footer-sponsor-deriv" src="/static/images/sponsors/deriv.svg" alt="Deriv logo"> </a> <a class="footer-sponsor-link" target="_blank" href="https://geocode.xyz" rel="noopener"> <img class="footer-sponsor-geocode" src="/static/images/sponsors/geocodelogo.svg" alt="Geocode logo"> </a> <a class="footer-sponsor-link" target="_blank" href="https://www.fastly.com/" rel="noopener"> <img class="footer-sponsor-fastly" src="/static/images/sponsors/fastly_logo.svg" alt="Fastly logo"> </a> <a class="footer-sponsor-link" target="_blank" href="https://opencagedata.com" rel="noopener"> <img class="footer-sponsor-opencage" src="/static/images/sponsors/open-cage.svg" alt="OpenCage logo"> </a> <!-- Added 2024-07-22 --> <a class="footer-sponsor-link" target="_blank" href="https://www.elastic.co/" rel="noopener"> <img class="footer-sponsor-elastic" src="/static/images/sponsors/elastic.svg" alt="Elastic logo"> </a> <!-- Added 2024-07-22 --> <a class="footer-sponsor-link" target="_blank" href="https://route4me.com/" rel="noopener"> <img class="footer-sponsor-route4me" src="/static/images/sponsors/route4me.png" alt="Route4Me logo"> </a> </div> </div> </footer> <div class="modal fade" tabindex="-1" role="dialog" id="metacpan_keyboard-shortcuts"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal">×</button> <h4 class="modal-title">Keyboard Shortcuts</h4> </div> <div class="modal-body row"> <div class="col-md-6"> <table class="table keyboard-shortcuts"> <thead> <tr> <th></th> <th>Global</th> </tr> </thead> <tbody> <tr> <td class="keys"> <kbd>s</kbd> </td> <td>Focus search bar</td> </tr> <tr> <td class="keys"> <kbd>?</kbd> </td> <td>Bring up this help dialog</td> </tr> </tbody> </table> <table class="table keyboard-shortcuts"> <thead> <tr> <th></th> <th>GitHub</th> </tr> </thead> <tbody> <tr> <td class="keys"> <kbd>g</kbd> <kbd>p</kbd> </td> <td>Go to pull requests</td> </tr> <tr> <td class="keys"> <kbd>g</kbd> <kbd>i</kbd> </td> <td>go to github issues (only if github is preferred repository)</td> </tr> </tbody> </table> </div> <div class="col-md-6"> <table class="table keyboard-shortcuts"> <thead> <tr> <th></th> <th>POD</th> </tr> </thead> <tbody> <tr> <td class="keys"> <kbd>g</kbd> <kbd>a</kbd> </td> <td>Go to author</td> </tr> <tr> <td class="keys"> <kbd>g</kbd> <kbd>c</kbd> </td> <td>Go to changes</td> </tr> <tr> <td class="keys"> <kbd>g</kbd> <kbd>i</kbd> </td> <td>Go to issues</td> </tr> <tr> <td class="keys"> <kbd>g</kbd> <kbd>d</kbd> </td> <td>Go to dist</td> </tr> <tr> <td class="keys"> <kbd>g</kbd> <kbd>r</kbd> </td> <td>Go to repository/SCM</td> </tr> <tr> <td class="keys"> <kbd>g</kbd> <kbd>s</kbd> </td> <td>Go to source</td> </tr> <tr> <td class="keys"> <kbd>g</kbd> <kbd>b</kbd> </td> <td>Go to file browse</td> </tr> </tbody> </table> </div> <div class="col-md-12"> <table class="table keyboard-shortcuts"> <thead> <tr> <th></th> <th>Search terms</th> </tr> </thead> <tbody> <tr> <td><em>module:</em> (e.g. <a href="/search?q=module%3APlugin">module:Plugin</a>)</td> </tr> <tr> <td><em>distribution:</em> (e.g. <a href="/search?q=distribution%3ADancer+auth">distribution:Dancer auth</a>)</td> </tr> <tr> <td><em>author:</em> (e.g. <a href="/search?q=author%3ASONGMU+Redis">author:SONGMU Redis</a>)</td> </tr> <tr> <td><em>version:</em> (e.g. <a href="/search?q=version%3A1.00">version:1.00</a>)</td> </tr> </tbody> </table> </div> </div> <div class="modal-footer"></div> </div> </div> </div> </body> </html>