This is now an archive web site. Some is still relevant as at May 2026 but some is purely of historic interest.
Lisa and I (Graham) are now fully retired from IT training.We have made many friends over 30 years of teaching about Python, Tcl, Perl, PHP, Lua, Java, C and C++ - and MySQL, Apache, Linux and Solaris/SunOS too. Our training notes are out of date, but with upward compatability some examples remain operational and relevant. You are welcome to make use of them "as seen", at your own risk. We now live in what was our training centre in Melksham - happy to meet with former delegates here - but do check ahead before coming round. We remain active, enjoying the times that we are retired but still healthy enough in mind and body to do things!
I am also active in many other area and still look after a lot of web sites - you can find an index ((here)) |
|
Processing all files in a directory - Perl (written 2008-10-11)
 From this week's Perl course:
opendir(DH, ".");
while ($igot = readdir(DH)) {
next if ($igot =~ /^\.{1,2}$/);
print "igot $igot\n";
}
You'll notice that I have used a regular expression to check for files called dot and dot-dot, which are the current and parent directory, as I typically would NOT want to process each of them in my loop.
Other alternatives ... this is Perl so "There is more than one way" ... include:
@files = glob("*");
@files = <*>
@files = `ls`
but although each of these is shorter, they are not recommended for heavy directory traversal applications - in each case, they return you a sorted list of names and that sorting can be useful for a single directory, but wasteful in a heavier application that's going through a large number of directories.
Once you are traversing a directory, you can do all sorts of things - use operators such as -d to find out what is a subdirectory, and -s to find the size of individual contents, for example.
If you want to find the biggest file in or below a directory (perhaps you're running out of disc space?), we have a sample program here from our Perl for larger projects course. The illustration with accompanies this article shows delegates on a private Perl training course, running at their offices in the UK. (written 2008-10-11, updated 2010-06-23)
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles P602 - Perl - Advanced File and Directory Handling [839] Reporting on the 10 largest files or 10 top scores - (2006-08-20) [975] Answering ALL the delegate's Perl questions - (2006-12-09) [1225] Perl - functions for directory handling - (2007-06-09) [1709] There is more that one way - Perl - (2008-07-14) [1861] Reactive (dynamic) formatting in Perl - (2008-10-31) [2876] Different perl examples - some corners I rarely explore - (2010-07-18) [3412] Handling binary data in Perl is easy! - (2011-08-30) [3429] Searching through all the files in or below a directory - Ruby, Tcl, Perl - (2011-09-09) P215 - Perl - More about Files [2405] But I am reading from a file - no need to prompt (Perl) - (2009-09-14) [2964] An introduction to file handling in programs - buffering, standard in and out, and file handles - (2010-09-21) [3320] Reading the nth line from a file (Perl and Tcl examples) - (2011-06-09) [3839] Spraying data from one incoming to series of outgoing files in Perl - (2012-08-15)
Some other Articles
Next in the sequence - courses next year (2009)23:30 bookings and midnight checkinsSeend, near Melksham, WiltshireWeb Bloopers - good form design - avoiding pitfallsProcessing all files in a directory - PerlText formating for HTML, with PHPCaen Hill and Olivers CastleDont bother to write a Perl programPerl - map to process every member of a list (array)What a shock
|
4759 posts, page by page
Link to page ... 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96 at 50 posts per page
This is a page archived from The Horse's Mouth at
http://www.wellho.net/horse/ -
the diary and writings of Graham Ellis.
Every attempt was made to provide current information at the time the
page was written, but things do move forward in our business - new software
releases, price changes, new techniques. So much so, and it's so long ago
that we are retired
Link to Ezine home page (for reading).
|
|