Chad Kellerman wrote:
>
> I know you can do one a liner that appends a string after line in a
> file:
> ie: perl -p -i -e 's/$oldsting/$1\n$nextline/' file.txt
>
> But I was doing it in a script:
>
> #!/usr/bin/perl
> use strict;
> my $conf = "/home/bob/my.cnf";
> my $string = "mysqld]";
> my $replace = "bob was here";
>
> open (FILE, "$conf") or die "can not open $conf: $!\n";
> my @file = <FILE>;
> close (FILE);
>
for (my $line = 0; $line <= $#file; $line++)
> {
> $/ = '[';
> if ($file[$line] =~ /$string$/)
> {
> $file[$line] .= "$replace";
> last;
> }
> }
>
open (FILE, ">$conf") or die "can not open $conf: $!\n";
> print FILE @file;
> close (FILE);
>
>
> Then I was thinking, there has got to be a better way of doing this..
Hi Chad.
I hope this helps without too much explanation.
Cheers,
Rob
use strict;
use warnings;
my $conf = "/home/bob/my.cnf";
my $string = "mysqld]";
my $replace = "bob was here";
local @ARGV = $conf; # pretend $conf was on the command line
local $^I = ''; # equivalent to -i qualifier
while (<>) {
print; # equivalent to -p qualifier
print $replace, "\n" if /$string$/;
}
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]