Acme-CreatingCPANModules

 view release on metacpan or  search on metacpan

MANIFEST  view on Meta::CPAN

slides/slide6e.html
slides/slide7.html
slides/slide7a.html
slides/slide7b.html
slides/slide7c.html
slides/slide7d.html
slides/slide7e.html
slides/slide8a.html
slides/slide8b.html
slides/slide9.html
slides/start.html
images/pause-0.jpg
images/pause-1.jpg
images/pause-2.jpg
images/pause-3.jpg
images/pause-4.jpg

lib/Acme/CreatingCPANModules.pm  view on Meta::CPAN


    my $bar = $foo->get();

=head1 THE TALK

[give or take a word]

[the slides that accompanied this talk are available through
http://jose-castro.org]

[we start at the first slide and you'll see a slide tag each time the
slide is supposed to change (just press enter for that)]

Hello!

First of all... [slide]

Good :-)

My name is José and I'm here to take you along the creation of a CPAN
module.

lib/Acme/CreatingCPANModules.pm  view on Meta::CPAN

able to get the other links from there.

[slide] And now we're going to create a CPAN module.

[slide] We assume you're here either because [slide] you want to be a
CPAN contributor, [slide] you want to be a better CPAN contributor, or
[slide] you have absolutely no idea what a lexical attribute is and
couldn't care less [at the same time, Abigail was giving his talk on
Lexical Attributes in the advanced room].

[slide] So let's get started, with [slide] C<Module::Starter>.

Now, you should know that there are other ways to create a CPAN
module, and no way is the true way. They all have some advantages and
some disadvantages. Anyway, for the purpose of this talk, we'll be
using C<Module::Starter>, and if there's time by the end I'll talk a
bit about the other alternatives.

So let's get started!

Just install C<Module::Starter> (if you don't know how to do that you
can talk to me later on) and you'll be provided the C<module-starter>
command.

Type it and you'll see [slide] WHOAA!!!

[slide] OK, relax :-)

C<Module::Starter> has a bunch of options you can use, but the most
important three ones are these: --module for the module name, --author
for the author's name (you) and --email for the author's email address
(it's always good to allow users to contact you).

lib/Acme/CreatingCPANModules.pm  view on Meta::CPAN


[slide] So let's go through it one more time: Changes for the list
of changes, MANIFEST with the list of files, Makefile.PL to be used
for installation, README, your module, and a bunch of tests.

[slide] Very well, then. Time for the live demo!

[I change to the next workspace and we're set] You know what they say
about live demos? They say "Don't!" O:-)

OK, then, first we'll create our module. [I type `module-starter
--module=Acme::CreatingCPANModules --author='Jose Castro'
--email=cog@cpan.org`]

There, done.

Now, the first I'm gonna do is get rid of C<boilerplate.t>. Well, not
really getting rid of it, I'll just put it aside for the time being
and I'll explain you later why I'm doing it. [`cd
Acme-CreatingCPANModules` and `mv t/boilerplate .`]

lib/Acme/CreatingCPANModules.pm  view on Meta::CPAN


It's really simple because it's my name and it's been in every slide
so far! :-) Bottom right corner, Jose Castro, can't miss it! :-)

Somewhere on that page you'll be able to find these slides. I think
currently their at the top right corner. That might change in the
future, and they may go under the "Talks" section, but they'll be
there and they'll be easy to find.

So thank you very much for your time, get C<Module::Starter> on your
machine and start a module today.

Don't be afraid of uploading it to CPAN. People will help you when you
do something wrong :-)

[slide]

Thank you.

Any questions? [email me at cog@cpan.org if you have any :-) ]

slides/index.html  view on Meta::CPAN

    z-index:3;
    background-image: url(/logo.png);
    background-repeat: no-repeat;
}
/* END index.css */

--></style>
<script type="text/javascript">
// BEGIN controls.js
function nextSlide() {
    window.location = 'start.html';
}

function prevSlide() {
    window.location = '';
}

function indexSlide() {
    window.location = 'index.html';
}

function startSlide() {
    window.location = 'start.html';
}

function closeSlide() {
    window.close();
}

function handleKey(e) {
    var key;
    if (e == null) {
        // IE

slides/index.html  view on Meta::CPAN

        key = e.which
    }
    switch(key) {
        case 8: prevSlide(); break
        case 13: nextSlide(); break
        case 32: nextSlide(); break
        case 81: closeSlide(); break
        case 105: indexSlide(); break
        case 110: nextSlide(); break
        case 112: prevSlide(); break
        case 115: startSlide(); break
        default: //xxx(e.which)
    }
}

document.onkeypress = handleKey
// END controls.js

</script>
</head>
<body>
<div id="topbar">
<table width='100%'>
<tr>
<td width="13%">CPAN</td>
<td align="center" width="73%">
    <a accesskey="s" href="start.html">Creating CPAN modules</a>
</td>
<td align="right" width="13%">
    &nbsp;
</td>
</tr>
</table>
</div>
<!-- END top -->

<div id="content">
<div class="top_spacer"></div>
<ol>
<li><a href="slide1.html"></a></li>
<li><a href="slide2.html">And now we're going to create a CPAN module</a></li>
<li><a href="slide3a.html">We assume you're here because...</a></li>
<li><a href="slide4.html">And now we'll start...</a></li>
<li><a href="slide5a.html">With Module::Starter</a></li>
<li><a href="slide6.html"></a></li>
<li><a href="slide7a.html"></a></li>
<li><a href="slide8a.html"></a></li>
<li><a href="slide9.html">Changes</a></li>
<li><a href="slide10.html">MANIFEST</a></li>
<li><a href="slide11.html">Makefile.PL</a></li>
<li><a href="slide12.html">README</a></li>
<li><a href="slide13.html">lib/Acme/CreatingCPANModules.pm</a></li>
<li><a href="slide14.html">t/00-load.t</a></li>

slides/index.html  view on Meta::CPAN

</ol>
</div>
<!-- BEGIN bottom -->
<div id="bottombar">
<table width="100%">
<tr>
<td align="left" valign="middle">
    <div style="display:none">
    <a accesskey='p' href="">&lt; &lt; Previous</a> |
    <a accesskey='i' href="">Index</a> |
    <a accesskey='n' href="start.html">Next &gt;&gt;</a>
    </div>
</td>
<td align="right" valign="middle">
    Copyright &copy; 2005 Jos&eacute; Castro
</td>
</tr>
</table>
</div> 
<div id="logo"></div>
<div class="spacer">

slides/slide1.html  view on Meta::CPAN

/* END index.css */

--></style>
<script type="text/javascript">
// BEGIN controls.js
function nextSlide() {
    window.location = 'slide2.html';
}

function prevSlide() {
    window.location = 'start.html';
}

function indexSlide() {
    window.location = 'index.html';
}

function startSlide() {
    window.location = 'start.html';
}

function closeSlide() {
    window.close();
}

function handleKey(e) {
    var key;
    if (e == null) {
        // IE

slides/slide1.html  view on Meta::CPAN

        key = e.which
    }
    switch(key) {
        case 8: prevSlide(); break
        case 13: nextSlide(); break
        case 32: nextSlide(); break
        case 81: closeSlide(); break
        case 105: indexSlide(); break
        case 110: nextSlide(); break
        case 112: prevSlide(); break
        case 115: startSlide(); break
        default: //xxx(e.which)
    }
}

document.onkeypress = handleKey
// END controls.js

</script>
</head>
<body>
<div id="topbar">
<table width='100%'>
<tr>
<td width="13%">CPAN</td>
<td align="center" width="73%">
    <a accesskey="s" href="start.html">Creating CPAN modules</a>
</td>
<td align="right" width="13%">
    #1
</td>
</tr>
</table>
</div>
<!-- END top -->

<div id="content">

slides/slide1.html  view on Meta::CPAN

<li>Can people in the back read this?</li>
</ul>

</div>
<!-- BEGIN bottom -->
<div id="bottombar">
<table width="100%">
<tr>
<td align="left" valign="middle">
    <div style="display:none">
    <a accesskey='p' href="start.html">&lt; &lt; Previous</a> |
    <a accesskey='i' href="index.html">Index</a> |
    <a accesskey='n' href="slide2.html">Next &gt;&gt;</a>
    </div>
</td>
<td align="right" valign="middle">
    Copyright &copy; 2005 Jos&eacute; Castro
</td>
</tr>
</table>
</div> 

slides/slide10.html  view on Meta::CPAN

}

function prevSlide() {
    window.location = 'slide9.html';
}

function indexSlide() {
    window.location = 'index.html';
}

function startSlide() {
    window.location = 'start.html';
}

function closeSlide() {
    window.close();
}

function handleKey(e) {
    var key;
    if (e == null) {
        // IE

slides/slide10.html  view on Meta::CPAN

        key = e.which
    }
    switch(key) {
        case 8: prevSlide(); break
        case 13: nextSlide(); break
        case 32: nextSlide(); break
        case 81: closeSlide(); break
        case 105: indexSlide(); break
        case 110: nextSlide(); break
        case 112: prevSlide(); break
        case 115: startSlide(); break
        default: //xxx(e.which)
    }
}

document.onkeypress = handleKey
// END controls.js

</script>
</head>
<body>
<div id="topbar">
<table width='100%'>
<tr>
<td width="13%">CPAN</td>
<td align="center" width="73%">
    <a accesskey="s" href="start.html">Creating CPAN modules</a>
</td>
<td align="right" width="13%">
    #10
</td>
</tr>
</table>
</div>
<!-- END top -->

<div id="content">

slides/slide11.html  view on Meta::CPAN

}

function prevSlide() {
    window.location = 'slide10.html';
}

function indexSlide() {
    window.location = 'index.html';
}

function startSlide() {
    window.location = 'start.html';
}

function closeSlide() {
    window.close();
}

function handleKey(e) {
    var key;
    if (e == null) {
        // IE

slides/slide11.html  view on Meta::CPAN

        key = e.which
    }
    switch(key) {
        case 8: prevSlide(); break
        case 13: nextSlide(); break
        case 32: nextSlide(); break
        case 81: closeSlide(); break
        case 105: indexSlide(); break
        case 110: nextSlide(); break
        case 112: prevSlide(); break
        case 115: startSlide(); break
        default: //xxx(e.which)
    }
}

document.onkeypress = handleKey
// END controls.js

</script>
</head>
<body>
<div id="topbar">
<table width='100%'>
<tr>
<td width="13%">CPAN</td>
<td align="center" width="73%">
    <a accesskey="s" href="start.html">Creating CPAN modules</a>
</td>
<td align="right" width="13%">
    #11
</td>
</tr>
</table>
</div>
<!-- END top -->

<div id="content">

slides/slide12.html  view on Meta::CPAN

}

function prevSlide() {
    window.location = 'slide11.html';
}

function indexSlide() {
    window.location = 'index.html';
}

function startSlide() {
    window.location = 'start.html';
}

function closeSlide() {
    window.close();
}

function handleKey(e) {
    var key;
    if (e == null) {
        // IE

slides/slide12.html  view on Meta::CPAN

        key = e.which
    }
    switch(key) {
        case 8: prevSlide(); break
        case 13: nextSlide(); break
        case 32: nextSlide(); break
        case 81: closeSlide(); break
        case 105: indexSlide(); break
        case 110: nextSlide(); break
        case 112: prevSlide(); break
        case 115: startSlide(); break
        default: //xxx(e.which)
    }
}

document.onkeypress = handleKey
// END controls.js

</script>
</head>
<body>
<div id="topbar">
<table width='100%'>
<tr>
<td width="13%">CPAN</td>
<td align="center" width="73%">
    <a accesskey="s" href="start.html">Creating CPAN modules</a>
</td>
<td align="right" width="13%">
    #12
</td>
</tr>
</table>
</div>
<!-- END top -->

<div id="content">

slides/slide13.html  view on Meta::CPAN

}

function prevSlide() {
    window.location = 'slide12.html';
}

function indexSlide() {
    window.location = 'index.html';
}

function startSlide() {
    window.location = 'start.html';
}

function closeSlide() {
    window.close();
}

function handleKey(e) {
    var key;
    if (e == null) {
        // IE

slides/slide13.html  view on Meta::CPAN

        key = e.which
    }
    switch(key) {
        case 8: prevSlide(); break
        case 13: nextSlide(); break
        case 32: nextSlide(); break
        case 81: closeSlide(); break
        case 105: indexSlide(); break
        case 110: nextSlide(); break
        case 112: prevSlide(); break
        case 115: startSlide(); break
        default: //xxx(e.which)
    }
}

document.onkeypress = handleKey
// END controls.js

</script>
</head>
<body>
<div id="topbar">
<table width='100%'>
<tr>
<td width="13%">CPAN</td>
<td align="center" width="73%">
    <a accesskey="s" href="start.html">Creating CPAN modules</a>
</td>
<td align="right" width="13%">
    #13
</td>
</tr>
</table>
</div>
<!-- END top -->

<div id="content">

slides/slide14.html  view on Meta::CPAN

}

function prevSlide() {
    window.location = 'slide13.html';
}

function indexSlide() {
    window.location = 'index.html';
}

function startSlide() {
    window.location = 'start.html';
}

function closeSlide() {
    window.close();
}

function handleKey(e) {
    var key;
    if (e == null) {
        // IE

slides/slide14.html  view on Meta::CPAN

        key = e.which
    }
    switch(key) {
        case 8: prevSlide(); break
        case 13: nextSlide(); break
        case 32: nextSlide(); break
        case 81: closeSlide(); break
        case 105: indexSlide(); break
        case 110: nextSlide(); break
        case 112: prevSlide(); break
        case 115: startSlide(); break
        default: //xxx(e.which)
    }
}

document.onkeypress = handleKey
// END controls.js

</script>
</head>
<body>
<div id="topbar">
<table width='100%'>
<tr>
<td width="13%">CPAN</td>
<td align="center" width="73%">
    <a accesskey="s" href="start.html">Creating CPAN modules</a>
</td>
<td align="right" width="13%">
    #14
</td>
</tr>
</table>
</div>
<!-- END top -->

<div id="content">

slides/slide15.html  view on Meta::CPAN

}

function prevSlide() {
    window.location = 'slide14.html';
}

function indexSlide() {
    window.location = 'index.html';
}

function startSlide() {
    window.location = 'start.html';
}

function closeSlide() {
    window.close();
}

function handleKey(e) {
    var key;
    if (e == null) {
        // IE

slides/slide15.html  view on Meta::CPAN

        key = e.which
    }
    switch(key) {
        case 8: prevSlide(); break
        case 13: nextSlide(); break
        case 32: nextSlide(); break
        case 81: closeSlide(); break
        case 105: indexSlide(); break
        case 110: nextSlide(); break
        case 112: prevSlide(); break
        case 115: startSlide(); break
        default: //xxx(e.which)
    }
}

document.onkeypress = handleKey
// END controls.js

</script>
</head>
<body>
<div id="topbar">
<table width='100%'>
<tr>
<td width="13%">CPAN</td>
<td align="center" width="73%">
    <a accesskey="s" href="start.html">Creating CPAN modules</a>
</td>
<td align="right" width="13%">
    #15
</td>
</tr>
</table>
</div>
<!-- END top -->

<div id="content">

slides/slide16.html  view on Meta::CPAN

}

function prevSlide() {
    window.location = 'slide15.html';
}

function indexSlide() {
    window.location = 'index.html';
}

function startSlide() {
    window.location = 'start.html';
}

function closeSlide() {
    window.close();
}

function handleKey(e) {
    var key;
    if (e == null) {
        // IE

slides/slide16.html  view on Meta::CPAN

        key = e.which
    }
    switch(key) {
        case 8: prevSlide(); break
        case 13: nextSlide(); break
        case 32: nextSlide(); break
        case 81: closeSlide(); break
        case 105: indexSlide(); break
        case 110: nextSlide(); break
        case 112: prevSlide(); break
        case 115: startSlide(); break
        default: //xxx(e.which)
    }
}

document.onkeypress = handleKey
// END controls.js

</script>
</head>
<body>
<div id="topbar">
<table width='100%'>
<tr>
<td width="13%">CPAN</td>
<td align="center" width="73%">
    <a accesskey="s" href="start.html">Creating CPAN modules</a>
</td>
<td align="right" width="13%">
    #16
</td>
</tr>
</table>
</div>
<!-- END top -->

<div id="content">

slides/slide17.html  view on Meta::CPAN

}

function prevSlide() {
    window.location = 'slide16.html';
}

function indexSlide() {
    window.location = 'index.html';
}

function startSlide() {
    window.location = 'start.html';
}

function closeSlide() {
    window.close();
}

function handleKey(e) {
    var key;
    if (e == null) {
        // IE

slides/slide17.html  view on Meta::CPAN

        key = e.which
    }
    switch(key) {
        case 8: prevSlide(); break
        case 13: nextSlide(); break
        case 32: nextSlide(); break
        case 81: closeSlide(); break
        case 105: indexSlide(); break
        case 110: nextSlide(); break
        case 112: prevSlide(); break
        case 115: startSlide(); break
        default: //xxx(e.which)
    }
}

document.onkeypress = handleKey
// END controls.js

</script>
</head>
<body>
<div id="topbar">
<table width='100%'>
<tr>
<td width="13%">CPAN</td>
<td align="center" width="73%">
    <a accesskey="s" href="start.html">Creating CPAN modules</a>
</td>
<td align="right" width="13%">
    #17
</td>
</tr>
</table>
</div>
<!-- END top -->

<div id="content">

slides/slide18.html  view on Meta::CPAN

}

function prevSlide() {
    window.location = 'slide17.html';
}

function indexSlide() {
    window.location = 'index.html';
}

function startSlide() {
    window.location = 'start.html';
}

function closeSlide() {
    window.close();
}

function handleKey(e) {
    var key;
    if (e == null) {
        // IE

slides/slide18.html  view on Meta::CPAN

        key = e.which
    }
    switch(key) {
        case 8: prevSlide(); break
        case 13: nextSlide(); break
        case 32: nextSlide(); break
        case 81: closeSlide(); break
        case 105: indexSlide(); break
        case 110: nextSlide(); break
        case 112: prevSlide(); break
        case 115: startSlide(); break
        default: //xxx(e.which)
    }
}

document.onkeypress = handleKey
// END controls.js

</script>
</head>
<body>
<div id="topbar">
<table width='100%'>
<tr>
<td width="13%">CPAN</td>
<td align="center" width="73%">
    <a accesskey="s" href="start.html">Creating CPAN modules</a>
</td>
<td align="right" width="13%">
    #18
</td>
</tr>
</table>
</div>
<!-- END top -->

<div id="content">

slides/slide19.html  view on Meta::CPAN

}

function prevSlide() {
    window.location = 'slide18.html';
}

function indexSlide() {
    window.location = 'index.html';
}

function startSlide() {
    window.location = 'start.html';
}

function closeSlide() {
    window.close();
}

function handleKey(e) {
    var key;
    if (e == null) {
        // IE

slides/slide19.html  view on Meta::CPAN

        key = e.which
    }
    switch(key) {
        case 8: prevSlide(); break
        case 13: nextSlide(); break
        case 32: nextSlide(); break
        case 81: closeSlide(); break
        case 105: indexSlide(); break
        case 110: nextSlide(); break
        case 112: prevSlide(); break
        case 115: startSlide(); break
        default: //xxx(e.which)
    }
}

document.onkeypress = handleKey
// END controls.js

</script>
</head>
<body>
<div id="topbar">
<table width='100%'>
<tr>
<td width="13%">CPAN</td>
<td align="center" width="73%">
    <a accesskey="s" href="start.html">Creating CPAN modules</a>
</td>
<td align="right" width="13%">
    #19
</td>
</tr>
</table>
</div>
<!-- END top -->

<div id="content">

slides/slide1a.html  view on Meta::CPAN

/* END index.css */

--></style>
<script type="text/javascript">
// BEGIN controls.js
function nextSlide() {
    window.location = 'slide1b.html#end';
}

function prevSlide() {
    window.location = 'start.html';
}

function indexSlide() {
    window.location = 'index.html';
}

function startSlide() {
    window.location = 'start.html';
}

function closeSlide() {
    window.close();
}

function handleKey(e) {
    var key;
    if (e == null) {
        // IE

slides/slide1a.html  view on Meta::CPAN

        key = e.which
    }
    switch(key) {
        case 8: prevSlide(); break
        case 13: nextSlide(); break
        case 32: nextSlide(); break
        case 81: closeSlide(); break
        case 105: indexSlide(); break
        case 110: nextSlide(); break
        case 112: prevSlide(); break
        case 115: startSlide(); break
        default: //xxx(e.which)
    }
}

document.onkeypress = handleKey
// END controls.js

</script>
</head>
<body>
<div id="topbar">
<table width='100%'>
<tr>
<td width="13%">CPAN</td>
<td align="center" width="73%">
    <a accesskey="s" href="start.html">Creating CPAN modules</a>
</td>
<td align="right" width="13%">
    #1
</td>
</tr>
</table>
</div>
<!-- END top -->

<div id="content">

slides/slide1a.html  view on Meta::CPAN


<small>continued...</small>

</div>
<!-- BEGIN bottom -->
<div id="bottombar">
<table width="100%">
<tr>
<td align="left" valign="middle">
    <div style="display:none">
    <a accesskey='p' href="start.html">&lt; &lt; Previous</a> |
    <a accesskey='i' href="index.html">Index</a> |
    <a accesskey='n' href="slide1b.html#end">Next &gt;&gt;</a>
    </div>
</td>
<td align="right" valign="middle">
    Copyright &copy; 2005 Jos&eacute; Castro
</td>
</tr>
</table>
</div> 

slides/slide1b.html  view on Meta::CPAN

}

function prevSlide() {
    window.location = 'slide1a.html';
}

function indexSlide() {
    window.location = 'index.html';
}

function startSlide() {
    window.location = 'start.html';
}

function closeSlide() {
    window.close();
}

function handleKey(e) {
    var key;
    if (e == null) {
        // IE

slides/slide1b.html  view on Meta::CPAN

        key = e.which
    }
    switch(key) {
        case 8: prevSlide(); break
        case 13: nextSlide(); break
        case 32: nextSlide(); break
        case 81: closeSlide(); break
        case 105: indexSlide(); break
        case 110: nextSlide(); break
        case 112: prevSlide(); break
        case 115: startSlide(); break
        default: //xxx(e.which)
    }
}

document.onkeypress = handleKey
// END controls.js

</script>
</head>
<body>
<div id="topbar">
<table width='100%'>
<tr>
<td width="13%">CPAN</td>
<td align="center" width="73%">
    <a accesskey="s" href="start.html">Creating CPAN modules</a>
</td>
<td align="right" width="13%">
    #1
</td>
</tr>
</table>
</div>
<!-- END top -->

<div id="content">

slides/slide1c.html  view on Meta::CPAN

}

function prevSlide() {
    window.location = 'slide1b.html#end';
}

function indexSlide() {
    window.location = 'index.html';
}

function startSlide() {
    window.location = 'start.html';
}

function closeSlide() {
    window.close();
}

function handleKey(e) {
    var key;
    if (e == null) {
        // IE

slides/slide1c.html  view on Meta::CPAN

        key = e.which
    }
    switch(key) {
        case 8: prevSlide(); break
        case 13: nextSlide(); break
        case 32: nextSlide(); break
        case 81: closeSlide(); break
        case 105: indexSlide(); break
        case 110: nextSlide(); break
        case 112: prevSlide(); break
        case 115: startSlide(); break
        default: //xxx(e.which)
    }
}

document.onkeypress = handleKey
// END controls.js

</script>
</head>
<body>
<div id="topbar">
<table width='100%'>
<tr>
<td width="13%">Spork</td>
<td align="center" width="73%">
    <a accesskey="s" href="start.html">Spork - The Kwiki Way To Do Slideshows</a>
</td>
<td align="right" width="13%">
    #1
</td>
</tr>
</table>
</div>
<!-- END top -->

<div id="content">

slides/slide1d.html  view on Meta::CPAN

}

function prevSlide() {
    window.location = 'slide1c.html#end';
}

function indexSlide() {
    window.location = 'index.html';
}

function startSlide() {
    window.location = 'start.html';
}

function closeSlide() {
    window.close();
}

function handleKey(e) {
    var key;
    if (e == null) {
        // IE

slides/slide1d.html  view on Meta::CPAN

        key = e.which
    }
    switch(key) {
        case 8: prevSlide(); break
        case 13: nextSlide(); break
        case 32: nextSlide(); break
        case 81: closeSlide(); break
        case 105: indexSlide(); break
        case 110: nextSlide(); break
        case 112: prevSlide(); break
        case 115: startSlide(); break
        default: //xxx(e.which)
    }
}

document.onkeypress = handleKey
// END controls.js

</script>
</head>
<body>
<div id="topbar">
<table width='100%'>
<tr>
<td width="13%">Spork</td>
<td align="center" width="73%">
    <a accesskey="s" href="start.html">Spork - The Kwiki Way To Do Slideshows</a>
</td>
<td align="right" width="13%">
    #1
</td>
</tr>
</table>
</div>
<!-- END top -->

<div id="content">

slides/slide1e.html  view on Meta::CPAN

}

function prevSlide() {
    window.location = 'slide1d.html#end';
}

function indexSlide() {
    window.location = 'index.html';
}

function startSlide() {
    window.location = 'start.html';
}

function closeSlide() {
    window.close();
}

function handleKey(e) {
    var key;
    if (e == null) {
        // IE

slides/slide1e.html  view on Meta::CPAN

        key = e.which
    }
    switch(key) {
        case 8: prevSlide(); break
        case 13: nextSlide(); break
        case 32: nextSlide(); break
        case 81: closeSlide(); break
        case 105: indexSlide(); break
        case 110: nextSlide(); break
        case 112: prevSlide(); break
        case 115: startSlide(); break
        default: //xxx(e.which)
    }
}

document.onkeypress = handleKey
// END controls.js

</script>
</head>
<body>
<div id="topbar">
<table width='100%'>
<tr>
<td width="13%">Spork</td>
<td align="center" width="73%">
    <a accesskey="s" href="start.html">Spork - The Kwiki Way To Do Slideshows</a>
</td>
<td align="right" width="13%">
    #1
</td>
</tr>
</table>
</div>
<!-- END top -->

<div id="content">

slides/slide2.html  view on Meta::CPAN

}

function prevSlide() {
    window.location = 'slide1.html';
}

function indexSlide() {
    window.location = 'index.html';
}

function startSlide() {
    window.location = 'start.html';
}

function closeSlide() {
    window.close();
}

function handleKey(e) {
    var key;
    if (e == null) {
        // IE

slides/slide2.html  view on Meta::CPAN

        key = e.which
    }
    switch(key) {
        case 8: prevSlide(); break
        case 13: nextSlide(); break
        case 32: nextSlide(); break
        case 81: closeSlide(); break
        case 105: indexSlide(); break
        case 110: nextSlide(); break
        case 112: prevSlide(); break
        case 115: startSlide(); break
        default: //xxx(e.which)
    }
}

document.onkeypress = handleKey
// END controls.js

</script>
</head>
<body>
<div id="topbar">
<table width='100%'>
<tr>
<td width="13%">CPAN</td>
<td align="center" width="73%">
    <a accesskey="s" href="start.html">Creating CPAN modules</a>
</td>
<td align="right" width="13%">
    #2
</td>
</tr>
</table>
</div>
<!-- END top -->

<div id="content">

slides/slide20.html  view on Meta::CPAN

}

function prevSlide() {
    window.location = 'slide19.html';
}

function indexSlide() {
    window.location = 'index.html';
}

function startSlide() {
    window.location = 'start.html';
}

function closeSlide() {
    window.close();
}

function handleKey(e) {
    var key;
    if (e == null) {
        // IE

slides/slide20.html  view on Meta::CPAN

        key = e.which
    }
    switch(key) {
        case 8: prevSlide(); break
        case 13: nextSlide(); break
        case 32: nextSlide(); break
        case 81: closeSlide(); break
        case 105: indexSlide(); break
        case 110: nextSlide(); break
        case 112: prevSlide(); break
        case 115: startSlide(); break
        default: //xxx(e.which)
    }
}

document.onkeypress = handleKey
// END controls.js

</script>
</head>
<body>
<div id="topbar">
<table width='100%'>
<tr>
<td width="13%">CPAN</td>
<td align="center" width="73%">
    <a accesskey="s" href="start.html">Creating CPAN modules</a>
</td>
<td align="right" width="13%">
    #20
</td>
</tr>
</table>
</div>
<!-- END top -->

<div id="content">

slides/slide21.html  view on Meta::CPAN

}

function prevSlide() {
    window.location = 'slide20.html';
}

function indexSlide() {
    window.location = 'index.html';
}

function startSlide() {
    window.location = 'start.html';
}

function closeSlide() {
    window.close();
}

function handleKey(e) {
    var key;
    if (e == null) {
        // IE

slides/slide21.html  view on Meta::CPAN

        key = e.which
    }
    switch(key) {
        case 8: prevSlide(); break
        case 13: nextSlide(); break
        case 32: nextSlide(); break
        case 81: closeSlide(); break
        case 105: indexSlide(); break
        case 110: nextSlide(); break
        case 112: prevSlide(); break
        case 115: startSlide(); break
        default: //xxx(e.which)
    }
}

document.onkeypress = handleKey
// END controls.js

</script>
</head>
<body>
<div id="topbar">
<table width='100%'>
<tr>
<td width="13%">CPAN</td>
<td align="center" width="73%">
    <a accesskey="s" href="start.html">Creating CPAN modules</a>
</td>
<td align="right" width="13%">
    #21
</td>
</tr>
</table>
</div>
<!-- END top -->

<div id="content">

slides/slide22.html  view on Meta::CPAN

}

function prevSlide() {
    window.location = 'slide21.html';
}

function indexSlide() {
    window.location = 'index.html';
}

function startSlide() {
    window.location = 'start.html';
}

function closeSlide() {
    window.close();
}

function handleKey(e) {
    var key;
    if (e == null) {
        // IE

slides/slide22.html  view on Meta::CPAN

        key = e.which
    }
    switch(key) {
        case 8: prevSlide(); break
        case 13: nextSlide(); break
        case 32: nextSlide(); break
        case 81: closeSlide(); break
        case 105: indexSlide(); break
        case 110: nextSlide(); break
        case 112: prevSlide(); break
        case 115: startSlide(); break
        default: //xxx(e.which)
    }
}

document.onkeypress = handleKey
// END controls.js

</script>
</head>
<body>
<div id="topbar">
<table width='100%'>
<tr>
<td width="13%">CPAN</td>
<td align="center" width="73%">
    <a accesskey="s" href="start.html">Creating CPAN modules</a>
</td>
<td align="right" width="13%">
    #22
</td>
</tr>
</table>
</div>
<!-- END top -->

<div id="content">

slides/slide23.html  view on Meta::CPAN

}

function prevSlide() {
    window.location = 'slide22.html';
}

function indexSlide() {
    window.location = 'index.html';
}

function startSlide() {
    window.location = 'start.html';
}

function closeSlide() {
    window.close();
}

function handleKey(e) {
    var key;
    if (e == null) {
        // IE

slides/slide23.html  view on Meta::CPAN

        key = e.which
    }
    switch(key) {
        case 8: prevSlide(); break
        case 13: nextSlide(); break
        case 32: nextSlide(); break
        case 81: closeSlide(); break
        case 105: indexSlide(); break
        case 110: nextSlide(); break
        case 112: prevSlide(); break
        case 115: startSlide(); break
        default: //xxx(e.which)
    }
}

document.onkeypress = handleKey
// END controls.js

</script>
</head>
<body>
<div id="topbar">
<table width='100%'>
<tr>
<td width="13%">CPAN</td>
<td align="center" width="73%">
    <a accesskey="s" href="start.html">Creating CPAN modules</a>
</td>
<td align="right" width="13%">
    #23
</td>
</tr>
</table>
</div>
<!-- END top -->

<div id="content">

slides/slide24.html  view on Meta::CPAN

}

function prevSlide() {
    window.location = 'slide23.html';
}

function indexSlide() {
    window.location = 'index.html';
}

function startSlide() {
    window.location = 'start.html';
}

function closeSlide() {
    window.close();
}

function handleKey(e) {
    var key;
    if (e == null) {
        // IE

slides/slide24.html  view on Meta::CPAN

        key = e.which
    }
    switch(key) {
        case 8: prevSlide(); break
        case 13: nextSlide(); break
        case 32: nextSlide(); break
        case 81: closeSlide(); break
        case 105: indexSlide(); break
        case 110: nextSlide(); break
        case 112: prevSlide(); break
        case 115: startSlide(); break
        default: //xxx(e.which)
    }
}

document.onkeypress = handleKey
// END controls.js

</script>
</head>
<body>
<div id="topbar">
<table width='100%'>
<tr>
<td width="13%">CPAN</td>
<td align="center" width="73%">
    <a accesskey="s" href="start.html">Creating CPAN modules</a>
</td>
<td align="right" width="13%">
    #24
</td>
</tr>
</table>
</div>
<!-- END top -->

<div id="content">

slides/slide25.html  view on Meta::CPAN

}

function prevSlide() {
    window.location = 'slide24.html';
}

function indexSlide() {
    window.location = 'index.html';
}

function startSlide() {
    window.location = 'start.html';
}

function closeSlide() {
    window.close();
}

function handleKey(e) {
    var key;
    if (e == null) {
        // IE

slides/slide25.html  view on Meta::CPAN

        key = e.which
    }
    switch(key) {
        case 8: prevSlide(); break
        case 13: nextSlide(); break
        case 32: nextSlide(); break
        case 81: closeSlide(); break
        case 105: indexSlide(); break
        case 110: nextSlide(); break
        case 112: prevSlide(); break
        case 115: startSlide(); break
        default: //xxx(e.which)
    }
}

document.onkeypress = handleKey
// END controls.js

</script>
</head>
<body>
<div id="topbar">
<table width='100%'>
<tr>
<td width="13%">CPAN</td>
<td align="center" width="73%">
    <a accesskey="s" href="start.html">Creating CPAN modules</a>
</td>
<td align="right" width="13%">
    #25
</td>
</tr>
</table>
</div>
<!-- END top -->

<div id="content">

slides/slide26.html  view on Meta::CPAN

}

function prevSlide() {
    window.location = 'slide25.html';
}

function indexSlide() {
    window.location = 'index.html';
}

function startSlide() {
    window.location = 'start.html';
}

function closeSlide() {
    window.close();
}

function handleKey(e) {
    var key;
    if (e == null) {
        // IE

slides/slide26.html  view on Meta::CPAN

        key = e.which
    }
    switch(key) {
        case 8: prevSlide(); break
        case 13: nextSlide(); break
        case 32: nextSlide(); break
        case 81: closeSlide(); break
        case 105: indexSlide(); break
        case 110: nextSlide(); break
        case 112: prevSlide(); break
        case 115: startSlide(); break
        default: //xxx(e.which)
    }
}

document.onkeypress = handleKey
// END controls.js

</script>
</head>
<body>
<div id="topbar">
<table width='100%'>
<tr>
<td width="13%">CPAN</td>
<td align="center" width="73%">
    <a accesskey="s" href="start.html">Creating CPAN modules</a>
</td>
<td align="right" width="13%">
    #26
</td>
</tr>
</table>
</div>
<!-- END top -->

<div id="content">

slides/slide2a.html  view on Meta::CPAN

}

function prevSlide() {
    window.location = 'slide1.html';
}

function indexSlide() {
    window.location = 'index.html';
}

function startSlide() {
    window.location = 'start.html';
}

function closeSlide() {
    window.close();
}

function handleKey(e) {
    var key;
    if (e == null) {
        // IE

slides/slide2a.html  view on Meta::CPAN

        key = e.which
    }
    switch(key) {
        case 8: prevSlide(); break
        case 13: nextSlide(); break
        case 32: nextSlide(); break
        case 81: closeSlide(); break
        case 105: indexSlide(); break
        case 110: nextSlide(); break
        case 112: prevSlide(); break
        case 115: startSlide(); break
        default: //xxx(e.which)
    }
}

document.onkeypress = handleKey
// END controls.js

</script>
</head>
<body>
<div id="topbar">
<table width='100%'>
<tr>
<td width="13%">CPAN</td>
<td align="center" width="73%">
    <a accesskey="s" href="start.html">Creating CPAN modules</a>
</td>
<td align="right" width="13%">
    #2
</td>
</tr>
</table>
</div>
<!-- END top -->

<div id="content">

slides/slide2b.html  view on Meta::CPAN

}

function prevSlide() {
    window.location = 'slide2a.html';
}

function indexSlide() {
    window.location = 'index.html';
}

function startSlide() {
    window.location = 'start.html';
}

function closeSlide() {
    window.close();
}

function handleKey(e) {
    var key;
    if (e == null) {
        // IE

slides/slide2b.html  view on Meta::CPAN

        key = e.which
    }
    switch(key) {
        case 8: prevSlide(); break
        case 13: nextSlide(); break
        case 32: nextSlide(); break
        case 81: closeSlide(); break
        case 105: indexSlide(); break
        case 110: nextSlide(); break
        case 112: prevSlide(); break
        case 115: startSlide(); break
        default: //xxx(e.which)
    }
}

document.onkeypress = handleKey
// END controls.js

</script>
</head>
<body>
<div id="topbar">
<table width='100%'>
<tr>
<td width="13%">CPAN</td>
<td align="center" width="73%">
    <a accesskey="s" href="start.html">Creating CPAN modules</a>
</td>
<td align="right" width="13%">
    #2
</td>
</tr>
</table>
</div>
<!-- END top -->

<div id="content">

slides/slide2c.html  view on Meta::CPAN

}

function prevSlide() {
    window.location = 'slide2b.html#end';
}

function indexSlide() {
    window.location = 'index.html';
}

function startSlide() {
    window.location = 'start.html';
}

function closeSlide() {
    window.close();
}

function handleKey(e) {
    var key;
    if (e == null) {
        // IE

slides/slide2c.html  view on Meta::CPAN

        key = e.which
    }
    switch(key) {
        case 8: prevSlide(); break
        case 13: nextSlide(); break
        case 32: nextSlide(); break
        case 81: closeSlide(); break
        case 105: indexSlide(); break
        case 110: nextSlide(); break
        case 112: prevSlide(); break
        case 115: startSlide(); break
        default: //xxx(e.which)
    }
}

document.onkeypress = handleKey
// END controls.js

</script>
</head>
<body>
<div id="topbar">
<table width='100%'>
<tr>
<td width="13%">CPAN</td>
<td align="center" width="73%">
    <a accesskey="s" href="start.html">Creating CPAN modules</a>
</td>
<td align="right" width="13%">
    #2
</td>
</tr>
</table>
</div>
<!-- END top -->

<div id="content">



( run in 0.511 second using v1.01-cache-2.11-cpan-0d8aa00de5b )