Beefy Boxes and Bandwidth Generously Provided by pair Networks
Come for the quick hacks, stay for the epiphanies.
 
PerlMonks  

Re: Perl Skills

by moritz (Cardinal)
on Jun 14, 2010 at 18:13 UTC ( [id://844691]=note: print w/replies, xml ) Need Help??


in reply to Perl Skills

You probably have a reason to learn perl, like wanting to start or participate in a project.

If that's the case, the best you can do is to learn a few basics, and then start coding on a similar project. You'll find that with some basic knowledge, you can get quite far. Whenever some of your solutions seem clumsy, research better approaches (but refrain from re-doing everything when you learned about a better approach).

What helped me greatly is hanging out here on perlmonks. By reading typical, real-world problems and there solutions you can learn much about programming and Perl.

Perl 6 - links to (nearly) everything that is Perl 6.

Replies are listed 'Best First'.
Re^2: Perl Skills
by Anonymous Monk on Jun 14, 2010 at 18:40 UTC
    My reason is future job success. So, no. I don't have any specific project for learning. Also I want to decouple project and the Perl parts. So, I don't get lost in the intrinsic details of the project or project requirement. I want to sharpen the saw.

    I often read Perlmonks posts and the solutions which helps in variety of way. I want to dive little deeper.

    While I like trial-error approach, I like to improve/deepen my fundamentals too.

      Then here are a few, more specific suggestions:

      You didn't mention object orientation. If you're not yet familiar with the Perl OO model, it would be a good idea to learn about it (like perlobj, and Moose for an extension).

      "Mastering Regular Expressions" by Jeffrey Friedl is the book about regexes, and a must-read if you want to dive deeper in that subject.

      overload surprised me with its many possibilities, and lead me to explore Scalar::Util (if you want to weed out duplicate objects, you need refaddr...)

      Other things docs you might skim or read: UNIVERSAL, perllexwarn, perlrun (it never ceases to amaze me how much you can do with perl's command line interface), perlmod for symbol tables, perlfaq1 .. perlfaq9.

      Perl 6 - links to (nearly) everything that is Perl 6.
        How to gain Perl 6 skills? as little documentation is available.

      Don't knock trial and error. Think of it as practice. Consider learning a new human language (or your native one for that matter). You can listen to tapes and be able to call for taxis or order food in a restaurant, but you can't have any real conversations until you have some real conversations. You learn by practice because the things you read about won't really make sense until you rewrite some neural pathways by using the things you learn. If you're not knocking your head against the keyboard, you're not really trying.

      Pick a project. Anything. Create a file-find utility (using File::Find) for your hard drive. Maybe index your drive. Download movie listings (WWW::Yahoo::Movies). TV Listings (figure out how to parse Yahoo TV listings -- it can be done!). Make a DVD library, including categories so you can print out a categorized list. Don't just read PerlMonks, but actually get in there and try to solve someone's problem. THEN, LATER, compare notes with what others wrote. It doesn't matter what it is, as long as you're coding. After all, if you just want to read for future success, you'll get weeded out in the first interview. Employers will ask what you've done, not what you've read.

      That said, once you have some notion of how you'd like to sharpen your skills, search for things on CPAN. There is an absolutely immense number of modules written by others and uploaded. While the quality varies, all of the best modules (including all the core modules) are there. You can use them to get complicated things done, or you can check out the code. Sometimes, just the titles and/or descriptions will get you thinking about something you'd like to write yourself.

      My two cents. --marmot

Re^2: Perl Skills
by cutlass2006 (Pilgrim) on Jun 17, 2010 at 18:44 UTC

    I have a few strategies for speeding up my understanding of a programming language, in the case of Perl I tend to:

    • implement basic algorithms that I understand in other programming languages (programming contests, puzzles are pretty good if you are in that frame of mind and have the time)
    • dig around test suites and seek out well written unit tests that test functionality I understand
    • don't skimp on taking the time to optimize your dev environment, code completion in emacs, running things automatically, etc ... becoming more efficient means you spend more time learning
    • browse the source code on CPAN

    When learning a language it can help to associate yourself with better programmers, PerlMonks is a good place to start but you may want to find an Open Source Perl project and help out ... you will learn from the core developers on the project

    Note that trial and error can be useful sometimes for getting 'muscle memory', but try to avoid too much 'hunt and peck' style of learning and never underestimate the value of instruction from others who know more.

      I think this is great advice and especially-

      dig around test suites and seek out well written unit tests that test functionality I understand

      Tests are often much better documentation of code for a developer than the Pod because, if well-done, they explore expectations, failure, and bounds tersely and much better than the average dev when trying to describe an API in plain English/Locale.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://844691]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others cooling their heels in the Monastery: (6)
As of 2024-03-28 21:23 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found