perl-begin / lib / why-perl.wml

<define-tag why_should_i_learn_perl>
<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:
</p>

<ol>

<li>
You can avoid dealing with many idiosyncrasies like memory allocation and
freeing, passing a context variable to a function, or inconvenient syntax
for complex data structures.
</li>

<li>
The code is <b>brief</b> and effective.
</li>

<li>
There is a lot of <b>Do-What-I-Means</b> (DWIMmeries) that make programming
simpler.
</li>

<li>
With a small amount of awareness your code can be <b>portable</b> across all
UNIXes, and even on Windows and other platforms.
</li>

<li>
Perl is <b>documented</b> extensively and you can get a lot of interactive,
human answers 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>.
</li>

</ol>

<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 used for a lot of diverse tasks: text
processing, system administration, web programming, web automation, GUI
programming, games programming, code generation, bio-informatics and
genealogical 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 most important programming <b>paradigms</b>, and
implemented them in a consistent and fun way. It is a dynamic language,
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="$(ROOT)/topics/cpan/">the <b>Comprehensive Perl Archive
Network (CPAN)</b></a>, which is a huge collection of useful (and
not-so-useful) re-usable Perl modules, under open source licences. They
allow you to use them as libraries to facilitate writing your code. So instead
of starting to write something yourself, do a CPAN search, 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>
</define-tag>
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.