CINXE.COM
Class::PseudoHash - Emulates Pseudo-Hash behaviour via overload - metacpan.org
<!DOCTYPE html> <html lang="en-US"> <head> <title>Class::PseudoHash - Emulates Pseudo-Hash behaviour via overload - 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-PseudoHash - MetaCPAN" href="/dist/Class-PseudoHash/releases.rss" /> <link rel="canonical" href="https://metacpan.org/pod/Class::PseudoHash" /> <meta name="description" content="Emulates Pseudo-Hash behaviour via overload" /> <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/Class::PseudoHash" /> <meta property="og:title" content="Class::PseudoHash" /> <meta property="og:description" content="Emulates Pseudo-Hash behaviour via overload" /> <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-PseudoHash was released."> <span class="relatize">13 Oct 2007 19:01:46 UTC</span> </div> </li> <li> Distribution: <a href="/dist/Class-PseudoHash">Class-PseudoHash</a> </li> <li> Module version: 1.10 </li> <li> <a data-keyboard-shortcut="g s" href="/dist/Class-PseudoHash/source/lib/Class/PseudoHash.pm">Source</a> (<a href="/dist/Class-PseudoHash/source/lib/Class/PseudoHash.pm?raw=1">raw</a>) </li> <li> <a data-keyboard-shortcut="g b" href="/dist/Class-PseudoHash/source/lib/Class">Browse</a> (<a href="/dist/Class-PseudoHash/source/lib/Class?raw=1">raw</a>) </li> <li> <a data-keyboard-shortcut="g c" href="/dist/Class-PseudoHash/changes">Changes</a> </li> <li> <a class="nopopup" href="/dist/Class-PseudoHash/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-PseudoHash">Issues</a> (1) </li> <li> <a rel="noopener nofollow" href="http://matrix.cpantesters.org/?dist=Class-PseudoHash+1.10" title="Matrix">Testers</a> <span title="(pass / fail / na)">(<a rel="noopener nofollow" href="https://www.cpantesters.org/distro/C/Class-PseudoHash.html?oncpan=1&distmat=1&version=1.10&grade=2" style="color: #090">51</a> / <a rel="noopener nofollow" href="https://www.cpantesters.org/distro/C/Class-PseudoHash.html?oncpan=1&distmat=1&version=1.10&grade=3" style="color: #900">0</a> / <a rel="noopener nofollow" href="https://www.cpantesters.org/distro/C/Class-PseudoHash.html?oncpan=1&distmat=1&version=1.10&grade=4">0</a>)</span> </li> <li> <a rel="noopener nofollow" href="http://cpants.cpanauthors.org/release/AUDREYT/Class-PseudoHash-1.10">Kwalitee</a> </li> <li> <div class="ttip" data-toggle="tooltip" data-placement="bottom" title="The # people with an indexing permission on Class-PseudoHash 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: 1 </div> </li> <li> <a rel="noopener nofollow" href="http://cpancover.com/latest/Class-PseudoHash-1.10/index.html">45.79% Coverage </a> </li> <li> License: mit </li> <li> Perl: v5.5.0 </li> <li class="nav-header">Activity</li> <li> <div class="activity-graph"> <img src="/dist/Class-PseudoHash/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/A/AU/AUDREYT/Class-PseudoHash-1.10.tar.gz"> Download (<span itemprop="fileSize">26.4KB</span>)</a> </li> <li> <a href="https://explorer.metacpan.org/?url=%2Fmodule%2FAUDREYT%2FClass-PseudoHash-1.10%2Flib%2FClass%2FPseudoHash.pm"> MetaCPAN Explorer </a> </li> <li> <a href="/dist/Class-PseudoHash/permissions"> Permissions </a> </li> <li> <a href="/dist/Class-PseudoHash/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-PseudoHash"> <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-PseudoHash"> <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/AUDREYT/Class-PseudoHash-1.10/view/lib/Class/PseudoHash.pm" >1.10 (AUDREYT on 2007-10-13)</option> <option value="/release/AUTRIJUS/Class-PseudoHash-1.01/view/lib/Class/PseudoHash.pm" >1.01 (AUTRIJUS on 2002-06-19)</option> <optgroup label="BackPAN">' <option value="/release/AUTRIJUS/Class-PseudoHash-1.00/view/lib/Class/PseudoHash.pm" >1.00 (AUTRIJUS on 2001-11-13)</option> <option value="/release/AUTRIJUS/Class-PseudoHash-0.02/view/lib/Class/PseudoHash.pm" >0.02 (AUTRIJUS on 2001-09-03)</option> <option value="/release/AUTRIJUS/Class-PseudoHash-0.01/view/lib/Class/PseudoHash.pm" >0.01 (AUTRIJUS on 2001-08-01)</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/AUDREYT/Class-PseudoHash-1.10/diff/AUDREYT/Class-PseudoHash-1.10/lib/Class/PseudoHash.pm" >1.10 (AUDREYT on 2007-10-13)</option> <option value="/release/AUDREYT/Class-PseudoHash-1.10/diff/AUTRIJUS/Class-PseudoHash-1.01/lib/Class/PseudoHash.pm" >1.01 (AUTRIJUS on 2002-06-19)</option> <optgroup label="BackPAN">' <option value="/release/AUDREYT/Class-PseudoHash-1.10/diff/AUTRIJUS/Class-PseudoHash-1.00/lib/Class/PseudoHash.pm" >1.00 (AUTRIJUS on 2001-11-13)</option> <option value="/release/AUDREYT/Class-PseudoHash-1.10/diff/AUTRIJUS/Class-PseudoHash-0.02/lib/Class/PseudoHash.pm" >0.02 (AUTRIJUS on 2001-09-03)</option> <option value="/release/AUDREYT/Class-PseudoHash-1.10/diff/AUTRIJUS/Class-PseudoHash-0.01/lib/Class/PseudoHash.pm" >0.01 (AUTRIJUS on 2001-08-01)</option> </optgroup> </select> </li> <li> <ul class="dependencies"> <li class="nav-header">Dependencies</li> <li><i class="ttip" title="dynamic_config enabled">unknown</i></li> <li> <hr> </li> <li> <a href="/module/Class::PseudoHash/requires">Reverse dependencies</a> </li> <li> <a href="http://deps.cpantesters.org/?module=Class%3A%3APseudoHash">CPAN Testers List</a> </li> <li> <a href="https://cpandeps.grinnz.com/?dist=Class-PseudoHash">Dependency graph</a> </li> </ul> </li> <li class="nav-header">Permalinks</li> <li> <a href="/release/AUDREYT/Class-PseudoHash-1.10/view/lib/Class/PseudoHash.pm">This version</a> </li> <li> <a href="/pod/Class::PseudoHash">Latest version</a> </li> <li> </li> <li> </li> </ul> </div> </nav> <div class="content-navigation"> <div class="breadcrumbs"> <span> <a data-keyboard-shortcut="g a" rel="author" href="/author/AUDREYT" class="author-name">⿻唐鳳</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/AUDREYT/Class-PseudoHash-1.10/view/lib/Class/PseudoHash.pm" >1.10 (AUDREYT on 2007-10-13)</option> <option value="/release/AUTRIJUS/Class-PseudoHash-1.01/view/lib/Class/PseudoHash.pm" >1.01 (AUTRIJUS on 2002-06-19)</option> <optgroup label="BackPAN">' <option value="/release/AUTRIJUS/Class-PseudoHash-1.00/view/lib/Class/PseudoHash.pm" >1.00 (AUTRIJUS on 2001-11-13)</option> <option value="/release/AUTRIJUS/Class-PseudoHash-0.02/view/lib/Class/PseudoHash.pm" >0.02 (AUTRIJUS on 2001-09-03)</option> <option value="/release/AUTRIJUS/Class-PseudoHash-0.01/view/lib/Class/PseudoHash.pm" >0.01 (AUTRIJUS on 2001-08-01)</option> </optgroup> </select> <a data-keyboard-shortcut="g d" class="release-name" href="/dist/Class-PseudoHash">Class-PseudoHash-1.10</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 zero No dependents </title> <rect x="0" y="0" width="4" height="15" fill="#e4e2e2" /> <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-PseudoHash-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-PseudoHash-1.10"> <input type="hidden" name="author" value="AUDREYT"> <input type="hidden" name="distribution" value="Class-PseudoHash"> <button type="submit" class="favorite"><span></span> ++</button> </form> </div> <div class="show-logged-out"> <button class="fav-not-logged-in favorite"><span></span> ++</button> </div> / <span>Class::PseudoHash</span> </div> </div> <main class="content"> <nav class="toc"> <div class="toc-header"><strong>Contents</strong></div> <ul> <li><a href="#NAME">NAME</a></li> <li><a href="#VERSION">VERSION</a></li> <li><a href="#SYNOPSIS">SYNOPSIS</a></li> <li><a href="#DESCRIPTION">DESCRIPTION</a></li> <li><a href="#NOTES">NOTES</a></li> <li><a href="#SEE-ALSO">SEE ALSO</a></li> <li><a href="#AUTHORS">AUTHORS</a></li> <li><a href="#COPYRIGHT">COPYRIGHT</a> <ul> <li><a href="#The-%22MIT%22-License">The "MIT" License</a></li> </ul> </li> </ul></nav> <div class="pod anchors"> <h1 id="NAME">NAME</h1> <p>Class::PseudoHash - Emulates Pseudo-Hash behaviour via overload</p> <h1 id="VERSION">VERSION</h1> <p>This document describes version 1.10 of Class::PseudoHash, released October 14, 2007.</p> <h1 id="SYNOPSIS">SYNOPSIS</h1> <pre><code>use Class::PseudoHash; my @args = ([qw/key1 key2 key3 key4/], [1..10]); my $ref1 = fields::phash(@args); # phash() override my $ref2 = Class::PseudoHash->new(@args); # constructor syntax</code></pre> <h1 id="DESCRIPTION">DESCRIPTION</h1> <p>Due to its impact on overall performance of ordinary hashes, pseudo-hashes are deprecated in Perl 5.8.</p> <p>As of Perl 5.10, pseudo-hashes have been removed from Perl, replaced by restricted hashes provided by <a href="/pod/Hash::Util">Hash::Util</a>. Additionally, Perl 5.10 no longer supports the <code>fields::phash()</code> API.</p> <p>Although <a href="/pod/perlref#Pseudo-hashes%3A-Using-an-array-as-a-hash">"Pseudo-hashes: Using an array as a hash" in perlref</a> recommends against depending on the underlying implementation (i.e. using the first array element as hash indice), there are undoubtly many legacy codebase still depending on pseudohashes; elimination of pseudo-hashes would therefore require a massive rewrite of their programs.</p> <p>Back in 2002, as one of the primary victims, I tried to devise a drop-in solution that could emulate exactly the same semantic of pseudo-hashes, thus keeping all my legacy code intact. So <code>Class::PseudoHash</code> was born.</p> <p>Hence, if your code use the preferred <code>fields::phash()</code> function, just write:</p> <pre><code>use fields; use Class::PseudoHash;</code></pre> <p>then everything will work like before. If you are creating pseudo-hashes by hand (<code>[{}]</code> anyone?), just write this instead:</p> <pre><code>$ref = Class::PseudoHash->new;</code></pre> <p>and use the returned object in whatever way you like.</p> <h1 id="NOTES">NOTES</h1> <p>If you set <code>$Class::PseudoHash::FixedKeys</code> to a false value and tries to access a non-existent hash key, then a new pseudo-hash entry will be created silently. This is most useful if you're already using untyped pseudo-hashes, and don't want the compile-time checking feature.</p> <p>Compile-time validating of keys is not possible with this module, for obvious reasons. Also, the performance will not be as fast as typed pseudo-hashes (but generally faster than untyped ones).</p> <h1 id="SEE-ALSO"><a id="SEE"></a>SEE ALSO</h1> <p><a href="/pod/fields">fields</a>, <a href="/pod/perlref#Pseudo-hashes%3A-Using-an-array-as-a-hash">"Pseudo-hashes: Using an array as a hash" in perlref</a></p> <h1 id="AUTHORS">AUTHORS</h1> <p>Audrey Tang <cpan@audreyt.org></p> <h1 id="COPYRIGHT">COPYRIGHT</h1> <p>Copyright 2001, 2002, 2007 by Audrey Tang <cpan@audreyt.org>.</p> <p>This software is released under the MIT license cited below.</p> <h2 id="The-"MIT"-License"><a id="The"></a><a id="The-MIT-License"></a>The "MIT" License</h2> <p>Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:</p> <p>The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.</p> <p>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</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::PseudoHash, 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::PseudoHash</code></pre> <p><a href="/pod/CPAN">CPAN shell</a></p> <pre><code>perl -MCPAN -e shell install Class::PseudoHash</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>