Another question, so far i have this script:
#!/usr/bin/perl
use IO::File;
die "Usage: script OLD_FILE, SEARCH, REPLACE, NEW_FILE\n"
unless @ARGV == 4;
my($old_file, $search, $replace, $new_file) = @ARGV;
$fh = new IO::File "> $new_file";
if (defined $fh) {
while(<>){
s/$search/$replace/g;
print;
}
$fh->close;
}
But the first problem is that if i try to run the code like this:
perl script.pl old.txt , \n new.txt
it will remove all the commas but won't replace them with new line
characters it will just remove them.
Also when i try to run the script it gives me this error:
Can't open ,: No such file or directory at script.pl line 11, <> line 1.
Can't open \n: No such file or directory at script.pl line 11, <> line 1.
Can't open new.txt: No such file or directory at script.pl line 11, <> line
1.
Why am i getting these errors, and how can i fix this?
Thanks in advance.
-----Original Message-----
From: James Edward Gray II [mailto:[EMAIL PROTECTED]
Sent: Saturday, July 24, 2004 3:13 PM
To: [EMAIL PROTECTED]
Cc: [EMAIL PROTECTED]
Subject: Re: Multiple Parameters
On Jul 24, 2004, at 11:38 AM, <[EMAIL PROTECTED]> wrote:
> I am trying to write a search and replace script that can accept
> multiple
> arguments, but i want the first argument to be the filename to read,
> the
> next one to be the string to search for, the next one to be the
> replacement
> string, and the last one to be the name of the new file it creates
> with the
> new changes, but i can't figure out how to seperate each argument, can
> some
> one tell me how to do something like this. Any help is very much
> appreciated.
Well, command line arguments come into the program by way of the array
@ARGV. So first we should be sure you got the right number of
arguments:
die "Usage: script OLD_FILE, SEARCH, REPLACE, NEW_FILE\n"
unless @ARGV == 4;
Then we can use it:
my($old_file, $search, $replace, $new_file) = @ARGV;
Finally, just FYI, you can do what you describe with a one-liner:
perl -pi.bak -e 's/search/replace/g' old_file
Hope that helps.
James
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>