You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
187 lines
4.4 KiB
187 lines
4.4 KiB
\documentclass[12pt]{beamer}
|
|
\usepackage{beamerthemeHannover, graphicx, clrscode, amsmath, amssymb, multicol}
|
|
\usepackage{verbatim}
|
|
\setbeamercolor{sidebar}{use=structure,bg=gray!60!green}
|
|
\title{Introduction To Perl 6 Modules}
|
|
\author[Duke Leto]{Jonathan "Duke" Leto}
|
|
\date{}
|
|
|
|
\begin{document}
|
|
|
|
\frame{
|
|
\titlepage
|
|
\begin{center}
|
|
\includegraphics[scale=0.3]{perl6modules}
|
|
\end{center}
|
|
}
|
|
|
|
\frame{
|
|
\frametitle{What is Perl 6?}
|
|
\begin{center}
|
|
|
|
\begin{itemize}
|
|
\item It is a specification for a language.
|
|
\item There are many implementations.
|
|
\item NOT the successor to Perl 5 (more like a kid sister).
|
|
\end{itemize}
|
|
\end{center}
|
|
}
|
|
|
|
\frame{
|
|
\frametitle{What are Perl 6 Modules?}
|
|
\begin{center}
|
|
|
|
\begin{itemize}
|
|
\item Just like Perl 5 modules, Perl 6 modules are units of distributable and
|
|
useful code.
|
|
|
|
\item The CPAN of Perl 6 is called http://modules.perl6.org
|
|
\item How many modules does your unreleased language have?
|
|
\end{itemize}
|
|
\end{center}
|
|
}
|
|
|
|
\frame{
|
|
\frametitle{Which flavor of Perl 6?}
|
|
\begin{center}
|
|
\begin{itemize}
|
|
\item Different flavors of Perl 6 have implemented different feature sets.
|
|
|
|
\item Rakudo Perl 6 currently has the largest feature set and the most number of current contributors.
|
|
\item Most Perl 6 modules worked on Rakudo at least some time in the past.
|
|
\end{itemize}
|
|
\end{center}
|
|
}
|
|
|
|
\frame{
|
|
\frametitle{Anatomy of a Perl 6 Module}
|
|
\begin{center}
|
|
\begin{itemize}
|
|
\item It looks just about the same!
|
|
\item META.info (like a Build.PL or Makefile.PL)
|
|
\item README*
|
|
\item lib/
|
|
\item t/
|
|
\end{itemize}
|
|
\end{center}
|
|
}
|
|
|
|
\frame{
|
|
\frametitle{What does META.info look like?}
|
|
|
|
It is just a chunk of JSON with project metadata.
|
|
|
|
\begin{center}
|
|
\includegraphics[scale=0.5]{soundex_meta_info}
|
|
\end{center}
|
|
|
|
}
|
|
|
|
\section{How Do I Install a Perl 6 Module}
|
|
|
|
\frame{
|
|
\frametitle{How Do I Install a Perl 6 Module}
|
|
|
|
You must enlist the help of a panda!
|
|
|
|
\includegraphics[scale=0.3]{panda1}
|
|
}
|
|
|
|
\frame{
|
|
\frametitle{Installing Panda}
|
|
|
|
First, we grab panda (the cpanminus of Perl 6):
|
|
|
|
\begin{itemize}
|
|
\item git clone git://github.com/tadzik/panda.git
|
|
\item cd panda
|
|
\item sh bootstrap.sh \# needs a perl6 binary in PATH
|
|
\end{itemize}
|
|
}
|
|
|
|
\frame{
|
|
\frametitle{Installing a Perl 6 Module with Panda}
|
|
So simple, even your grandma could do it:
|
|
\begin{itemize}
|
|
\item panda install Algorithm::Soundex
|
|
\end{itemize}
|
|
}
|
|
|
|
\section{How Do I Write A Perl 6 Module?}
|
|
\frame{
|
|
\frametitle{How Do I Start Writing a Perl 6 Module?}
|
|
|
|
\begin{itemize}
|
|
\item git clone https://github.com/tadzik/Module-Starter
|
|
\item cd Module-Starter
|
|
\item Module-Starter --description="some junk" Some::Junk
|
|
|
|
\end{itemize}
|
|
Now you have directory Some-Junk/ with a META.info!
|
|
}
|
|
|
|
\frame{
|
|
\frametitle{Show me the code!}
|
|
|
|
This is the essence of all Perl 6 modules
|
|
|
|
\includegraphics[scale=0.5]{perl6_pm_example}
|
|
}
|
|
|
|
\frame{
|
|
\frametitle{Writing Tests for a Perl 6 Module}
|
|
Very similar to Perl 5 tests:
|
|
\includegraphics[scale=0.4]{perl6_test}
|
|
}
|
|
|
|
\frame{
|
|
\frametitle{Running Tests for a Perl 6 Module}
|
|
|
|
The easiest way is still prove.
|
|
\begin{itemize}
|
|
\item prove -e perl6 -rv t/
|
|
\end{itemize}
|
|
\includegraphics[scale=0.4]{perl6_test_run}
|
|
|
|
This requires a recent (3.x) TAP::Harness !
|
|
}
|
|
|
|
\section{Fame And Possibly Fortune}
|
|
\frame{
|
|
\frametitle{How Do I Get Famous?}
|
|
|
|
You say you want your Perl 6 module on http://modules.perl6.org ?
|
|
|
|
\begin{itemize}
|
|
\item fork perl6/ecosystem on Github
|
|
\item add your project to the META.list file
|
|
\item Send a pull request
|
|
\end{itemize}
|
|
|
|
META.list is just a file which lists every META.info in the ecosystem.
|
|
}
|
|
|
|
\frame{
|
|
\frametitle{Getting Involved}
|
|
\begin{center}
|
|
\begin{itemize}
|
|
\item http://perl6.org
|
|
\item http://modules.perl6.org
|
|
\item Planet Perl 6 http://planetsix.perlfoundation.org
|
|
\item \#perl6 on irc.freenode.net
|
|
\item \#parrot on irc.perl.org
|
|
\end{itemize}
|
|
\end{center}
|
|
}
|
|
|
|
\frame{
|
|
\frametitle{ Thanks! }
|
|
\begin{itemize}
|
|
\item Larry
|
|
\item Everyone working on Parrot, Rakudo and Perl 6
|
|
\item PDX.pm for listening to my rants
|
|
\end{itemize}
|
|
\includegraphics[scale=0.3]{panda_rainbow}
|
|
}
|
|
|
|
\end{document}
|
|
|