Richard Fernandez wrote:
>
> I just had a situation where I needed to replace one string with another
> string in 200 files.
> This is what I came up with, but I know there has to be a better way. Below
> is my code.
>
> "myfiles" contains a list of the files I need to scrub, one per line.
>
> -------8<-----------------8<-----------------------
> #!/usr/local/bin/perl -w
> use strict;
> $|++;
^^^^
You aren't printing to STDOUT.
> my @files = `cat myfiles` or die;
> for (@files) {
>
> chomp;
> push @ARGV, $_;
> }
You could also write that as:
chomp( @ARGV = `cat myfiles` );
@ARGV or die;
> $^I = ".bak"; # Got this from a previous message; thanks Peter!
> while (<>) {
>
> s#/u01/app/webMethodsFCS#/u02/app/webMethodsFCSclone#g;
> print;
>
> }
> ---------8<------------------8<-----------------------
>
> Seems to me there should be a way to provide the filenames on the command line
There certainly is.
> w/o having to read the list into an array first, but I tried using
> xargs (this is unix) and a couple of other things but couldn't figure it out.
Assuming 'yourprogram' is your perl program.
yourprogram *
Stores all non-hidden files in @ARGV.
yourprogram xyz*
Stores all files that start with 'xyz' in @ARGV.
yourprogram `cat myfiles`
Stores the contents of myfiles in @ARGV.
John
--
use Perl;
program
fulfillment
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]