>>>>> "Raj" == Raj Karadakal <[EMAIL PROTECTED]> writes:
Raj> Hi,
Raj> I am trying to modify some file sin place usinh the -i switch of
Raj> perl. In each of the files however I need to replace certain strings with
Raj> file name it self.
Raj> When I try the following command
Raj> perl -i.orig -pe 's/<NAME>/$0/' `ls -1`
Raj> Will replace '<NAME>' with '-e' in all the files
Raj> How can I get the file names in my script?
>From 'perldoc perlrun':
From the shell, saying
$ perl -p -i.orig -e "s/foo/bar/; ... "
is the same as using the program:
#!/usr/bin/perl -pi.orig
s/foo/bar/;
which is equivalent to
#!/usr/bin/perl
$extension = '.orig';
LINE: while (<>) {
if ($ARGV ne $oldargv) {
if ($extension !~ /\*/) {
$backup = $ARGV . $extension;
}
else {
($backup = $extension) =~ s/\*/$ARGV/g;
}
rename($ARGV, $backup);
open(ARGVOUT, ">$ARGV");
select(ARGVOUT);
$oldargv = $ARGV;
}
s/foo/bar/;
}
continue {
print; # this prints to original filename
}
select(STDOUT);
except that the -i form doesn't need to compare $ARGV
to $oldargv to know when the filename has changed.
It does, however, use ARGVOUT for the selected file-
handle. Note that STDOUT is restored as the default
output filehandle after the loop.
Note the $ARGV there. Yes, the filename is in $ARGV.
--
Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095
<[EMAIL PROTECTED]> <URL:http://www.stonehenge.com/merlyn/>
Perl/Unix/security consulting, Technical writing, Comedy, etc. etc.
See PerlTraining.Stonehenge.com for onsite and open-enrollment Perl training!
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]