you could use the s/// operator (substitute).
try
$line =~s/$IPold/$IPnew/;
This will change the first occurence of $IPold in $line into $IPnew.
If you want to change multiple occurences, use
$line =~s/$IPold/$IPnew/g;
g stands for global.
hope this helps,
cr
On Sun, 22 Apr 2001 14:13:12 -0400, Jon Tillman said:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Hi all,
> I am a perl newbie, who is learning perl because I accidentally became a
> sysadmin at work (sigh). My first task was a set of perl scripts to change
> entries in .hosts files for BIND/DNS. The first one I wrote only needed to
> change the TTL value in the file, and so I kinda munged it by using, in part:
>
> if ($line=~/\)$/) {
> print FILEOUT " $ttl )\n";
>
> Now I need to write one that will update the IP address, wherever it is
> given. Assuming that I have two variables $IPold and $IPnew, how would I
> write a regex to replace the one above that will find all instances of $IPold
> in a variable $line, and replace them with $IPnew?
>
> Here is some more code to put it in context:
>
> #!/usr/bin/perl
>
> use strict
>
> my $dir= shift || '.'; # work only in the dir it is called from
>
> print "--==++ Update MX records ++==--\n";
> print "Enter old IP: ";
> my $IP1=<STDIN>;
> print "Enter new IP: ";
> my $IP2=<STDIN>;
> chomp $IP1; # remove newline chars
> chomp $IP2; # remove newline chars
>
> opendir(DIR, $dir) or die "Cannot open $dir for reading: $!\n";
> for my $file (grep(!/^\.\.?$/, readdir(DIR))) {
> chomp $file;
> next unless ($file =~ /\.hosts$/);
>
> open (FILEOUT, ">$dir/${file}.jonnew") or die "Cannot open
> $dir/${file}.jonnew for writing: $!\n";
> open (FILEIN, "$dir/$file") or die "Cannot open $dir/$file for reading:
> $!\n";
>
> my $changed = 0;
>
> while (my $line = <FILEIN>) {
> chomp ($line);
> $line =~ s/\r$//;
>
> if ($line=~/mail IN A $IP1/) {
> print FILEOUT "mail IN A $IP2\n";
> $changed++;
> } else {
> print FILEOUT "$line\n";
> }
> }
>
> close (FILEIN);
> close (FILEOUT);
>
> if ($changed) {
> unlink("$dir/$file");
> link("$dir/${file}.jonnew", "$dir/$file");
> unlink("$dir/${file}.jonnew");
> } else {
> unlink("$dir/${file}.jonnew");
> }
>
> }
> closedir(DIR);
>
>
>
> - --
> Jon Tillman
> http://www.eruditum.org
>
> The worst thing about censorship is
>
> -----BEGIN PGP SIGNATURE-----
> Version: PGP 6.5.1i
>
> iQA/AwUBOuMfOdga7tZtnIOtEQJmGACeKOS2ToMo5WM/ovxtaIRKBZ7/sikAn1/9
> DMlkVxE1ITApG/6sco4yUBHn
> =v21C
> -----END PGP SIGNATURE-----
>
>