Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
PerlMonks  

Re: How can I run an folder full of text files through a perl script?

by graff (Chancellor)
on Dec 08, 2012 at 17:31 UTC ( [id://1007907]=note: print w/replies, xml ) Need Help??


in reply to How can I run an folder full of text files through a perl script?

This is a very common type of task (applying some process to each item in a list of files), and it can actually be generalized to a broader set of tasks (applying some shell command-line operation to each item in a list of strings, and in many cases, needing a modified version of the input string to serve as an "output string" on each iteration). In an average work week, I might need to do something like this many times a day.

So, many years ago, I wrote shloop -- execute shell command on a list, and I've been using it every since. In your case, you'd do something like this, which assumes that your system has the unix-style "ls" utility to list the contents of a directory (there's an 'ls.exe' available for MS-Windows systems), and that your "small perl script" simply takes the name of a text file as the sole command-line argument:

ls *.txt | shloop -e small_perl_script
Quite often, the situation involves creating a modified file from a source file, either by providing input and output arguments for a process, or by redirecting process output to a new file:
# supplying input and output args: "cmd inp.arg out.arg" ls *.txt | shloop -e small_perl_script -s '.txt$:.new.txt' # or, using redirection: "cmd inp.arg > out.arg" ls *.txt | shloop -e small_perl_script -r -s '.txt$:.new.txt'
shloop has grown over the years to include lots of bells and whistles, but one of the early things I wanted to be sure of was that it would work on MS-Windows shells as well as unix/linux ones. (Getting the Windows version of the linux "bash" shell is always an improvement over a "native" MS-DOS style shell, but shloop should work with cmd.exe, or command.exe or whatever you have.)

HTH.

Log In?
Username:
Password:

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

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

    No recent polls found