Globbing
The
command prompt usually takes a solitary asterisk
(*
) command-line argument and turns it into a list
of all of the filenames in the current directory. So, when you say
del *, you’ll remove all of the files from
the current directory. (Don’t try this unless you like
restoring the current directory from your backup device.) Similarly,
*.c as a command-line argument turns into a list
of all filenames in the current directory that end in
.c, and c:\temp\backup* is
a list of all filenames in the directory c:\temp
that begin with backup. (If this information is
new to you, you probably want to read some more about using the
command line somewhere else before proceeding.)
The expansion of arguments like * or
*.c into the list of matching filenames is
called globbing. Perl supports globbing through
a very simple mechanism—just put the globbing pattern between
angle brackets or use the more
mnemonically named glob
function, like this:
@a = <*.plx>; @a = glob("*.plx");
In a list context, as demonstrated here, the glob returns a list of
all names that match the pattern or an empty list if none match. In a
scalar context, the next name that matches is returned, or
undef
is returned
if there are no more matches; this process is very similar to reading
from a filehandle. For example, to look at one name at a time:
while (defined($nextname = <c:/scripts/*.plx>)) { print "one of the files is $nextname\n"; }
Here the returned filenames begin with c:\scripts\, so that if you want just the ...
Get Learning Perl on Win32 Systems now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.