Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris

Comment on

( #3333=superdoc: print w/replies, xml ) Need Help??
Let's go line by through the code.

use Path::Class;

So, we'll use Path::Class. According to the linked docs, this use statement exports 2 functions: dir and file. So now we know anytime we see the function dir, we are invoking the one from Path::Class. From the docs:


A synonym for Path::Class::Dir->new.

So the correct place to find docs on the object returned by dir is Path::Class::Dir. Let us continue:
# Iterate over the content of foo/bar while (my $file = $dir->next) {
Now we've invoked the method next via an arrow dereference, so we check the appropriate package for the object for the method documentation. If you didn't realize it what package it was, you can use ref to tell you via the debug statement print ref $dir;.
$dir_or_file = $dir->next()

A convenient way to iterate through directory contents. The first time next() is called, it will open() the directory and read the first item from it, returning the result as a Path::Class::Dir or Path::Class::File object (depending, of course, on its actual type). Each subsequent call to next() will simply iterate over the directory's contents, until there are no more items in the directory, and then the undefined value is returned....

So now we have either a Path::Class::Dir or a Path::Class::File, depending on what the iterator hit. In both cases, methods by the name of stringify and is_dir are available and documented in the appropriate docs. When you get to the line

next if $file->is_dir();

we see next is not associated with a object dereference, so unless Path::Class exports something by that name, it will be a Perl CORE function. So, if we check the docs, either via the web at next or on the command line via perldoc -f next, we see it's a language keyword for flow control.

This is all recoverable if you follow the logical flow of the program.

#11929 First ask yourself `How would I do this without a computer?' Then have the computer do it the same way.

In reply to Re: Arrow Operator and questions related to Path::Class by kennethk
in thread Arrow Operator and questions related to Path::Class by kamal

Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":

  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.
  • Log In?

    What's my password?
    Create A New User
    and all is quiet...

    How do I use this? | Other CB clients
    Other Users?
    Others romping around the Monastery: (3)
    As of 2017-12-17 03:07 GMT
    Find Nodes?
      Voting Booth?
      What programming language do you hate the most?

      Results (462 votes). Check out past polls.