Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery
 
PerlMonks  

Re: can I get a translation

by ELISHEVA (Prior)
on Apr 23, 2009 at 14:51 UTC ( [id://759554]=note: print w/replies, xml ) Need Help??


in reply to can I get a translation

A translation of sorts:

  • If used in list context.... What this is saying is that readdir() can be used either to return one directory member at a time or all directory members at once. If you do @files=readdir(DIR) you get them all at once because Perl sees the "@" before "@files" and thinks list context. If you do $sFile=readder(DIR) you get them one at a time because Perl sees scalar context. readdir keeps track of which ones you've already retrieved so far
  • you'd better prepend the directory.... readdir returns the local name of a file rather than the fully qualified path, e.g. "foo.txt" rather than "/home/joe/foo.txt".
  • Otherwise, because we didn't chdir there... Making your code dependent on the current directory isn't normally a good idea. But if $some_dir just happened to be the current directory, then using the local name instead of the fully qualified path would just happen to work.

As for the code

# opens a "cursor" on the directory entries # works kind of like open(...) but for directories rather # than files opendir(DIR, $some_dir) || die "can't opendir $some_dir: $!"; # calls readdir(DIR) in list context - so that means that # all directory entries are returned at once. # then it passes the array of local file names through grep # grep selects members of an array based on the return # value of the {...} bit. # # $_ - a member of the array returned by readdir(DIR) # i.e. the local name of a file in the directory $some_dir # # /^\./ - selects only local file names beginning with dots. # this is short for $_ =~ /^\./ # # -f "$some_dir/$_" - checks to see if the fully qualified path # "$some_dir/$_" is an existing file. @dots = grep { /^\./ && -f "$some_dir/$_" } readdir(DIR); # like close() but for directories closedir DIR;

Hope that helps, best, beth

Update: added explanation of grep {...} block

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others meditating upon the Monastery: (4)
As of 2024-04-25 17:48 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found