perl-begin / src / learn / index.html.wml

#include '../template.wml'

<latemp_subject "Learn Perl Now" />

<h2 id="how-to-learn"><strong>How</strong> to Learn Perl?</h2>

<p>
<a href="$(ROOT)/resources/"><b>See our resources for Perl Beginners</b></a> 
and browse the site on its navigation menu. Among them are:
</p>

<ul>

<li>
<a href="$(ROOT)/tutorials/">Online Tutorials</a> - online tutorials for
learning Perl. Also see our 
<a href="$(ROOT)/tutorials/perl-for-newbies/">local tutorial</a>.
</li>

<li>
<a href="$(ROOT)/books/">Books</a> - some of them are legally available
online.
</li>

<li>
<a href="$(ROOT)/core-doc/">The Perl Core Documentation</a> - what ships
with Perl. Contains topical tutorials and references.
</li>

</ul>

<h2 id="why-learn"><strong>Why</strong> should I learn Perl?</h2>

<div class="further_reading">
<p>
For further reading see:
</p>

<ul>
<li><a href="http://www.perl.org/advocacy/whyperl.html">Why Perl is a Valid
Choice</a></li>
<li><a href="http://perltraining.com.au/whyperl.html">Perl Training 
Australia - Why Perl?</a></li>
</ul>
</div>

<p>
So why should you learn Perl? Here goes nothing:
</p>

<h3 id="perl_is_fun">1. Perl is Fun</h3>

<p>
Writing Perl code is very fun and rewarding. You don't have to <b>deal with
a lot of idiosyncracies</b> like memory allocation and freeing, passing a 
context  variable; the code is <b>brief and effective</b>; there is a 
<b>lot of Do-What-I-Means</b> (DWIMmeries) that make life simpler; with a 
small amount of awareness your code can be <b>portable</b> across all UNIXes, 
and even on Windows and other platforms; Perl is <b>documented extensively</b> 
and you can get a <b>lot of interactive, human answers</b> for your questions 
from  <a href="$(ROOT)/mailing-lists/">mailing lists</a>,
<a href="$(ROOT)/irc/">online chats</a> and <a href="$(ROOT)/web-forums/">web 
forums</a>.
</p>

<p>
Most serious Perl programmers <b>love their language</b> and love programming
in it.
</p>

<h3 id="perl_is_useful">2. Perl is Useful</h3>

<p>
Perl has been successfully <b>used for a lot of diverse tasks</b>: text 
processing, system administration, web programming, web automation, GUI 
programming, games programming, code generation, bio-informatics and 
geneological research,  lingual and etymological research, number crunching, 
and testing and quality assurance.
</p>

<h3 id="perl_is_portable">3. Perl is Open Source</h3>

<p>
Perl is fully <a href="http://en.wikipedia.org/wiki/Open-source_software">Free
(both gratis and libre) and Open Source Software</a>, and is usable for almost
any use. It can and has been used for in-house software, web software, open 
source software, or open source or non-open-source commercial software (see
<a href="http://www.movabletype.org/">Movable Type</a> or 
<a href="http://bestpractical.com/rt">Request Tracker</a> for 
instance).
</p>

<h3 id="perl_can_show_the_world">4. Perl can Show You the World</h3>

<p>
Perl 5 has borrowed the <b>most important programming paradigms</b>, and 
implemented them in a consistent and fun way. It is a <b>dynamic language</b>, 
that supports Object-Oriented Programming (<b>OOP</b>), Functional 
Programming (<b>FP</b>), Aspect-Oriented Programming, and lots of other 
buzzwords, while not trying to prevent you from writing quick and dirty code 
to get your work done.
</p>

<p>
As such Perl is highly enlightening. If you know Perl well, you'll have no
problem picking up such languages as 
<a href="http://www.python.org/">Python</a>, 
<a href="http://www.ruby-lang.org/">Ruby</a>, 
<a href="http://www.php.net/">PHP</a>, 
<a href="http://java.sun.com/">Java</a>,
<a href="http://en.wikipedia.org/wiki/Microsoft_.NET">Microsoft .NET</a>,
or more obscure languages such as 
<a href="http://www.schemers.org/">Scheme</a>. In fact, Perl has proven
very influential on most of these languages, to a large extent .
</p>

<p>
Perl is also a useful stepping stone for learning <a href="http://en.wikipedia.org/wiki/C_(programming_language)">ANSI C</a> and 
C++, and also will improve your code writing in any language.
</p>

<p>
If you understand Perl, you'll understand the world!
</p>

<h3 id="perl_and_code_reuse">5. Don't re-invent the wheel! Re-use commonly
used, proven code</h3>

<p>
Perl has <a href="http://www.cpan.org/">the Comprehensive Perl Archive 
Network</a>, which is a <b>huge collection of useful</b> (and not-so-useful) 
re-usable Perl modules, under an open source licence. They allow you to use 
them as libraries to facilitate writing your code. So instead of starting
to write something yourself, <a href="http://search.cpan.org/">do a CPAN 
search</a>, or ask someone for a recommendation for a good CPAN module.
</p>

<h2 id="how_do_i_start">Great! Now how do I start?</h2>

<p>
See our <a href="$(ROOT)/resources/">resources page</a> for links to pages
with online resources to get you up to speed with Perl, and then become better 
at it.
</p>
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.