これに使用する方が良いと思いますperl
:
#!/usr/bin/perl
use strict;
use warnings;
my $file1 = 'aaa.txt';
my $file2 = 'bbb.txt';
open my $if1,'<',$file1 or die "$file1: $!\n";
open my $if2,'<',$file2 or die "$file2: $!\n";
my %ip_dictionary;
while(<$if2>){
my ($ipv4,$ipv6)=split;
$ip_dictionary{$ipv4}=$ipv6;
}
close $if2;
my $slurp = do { local $/; <$if1>};
close $if1;
$slurp=~ s!((?:[0-9]{1,3}\.){3}[0-9]{1,3})!exists $ip_dictionary{$1} and is_valid_ip($1) ? $ip_dictionary{$1} : $1!eg;
open my $of,'>',$file1;
print $of $slurp;
sub is_valid_ip{
my $ip=shift//return 0;
for(split /\./,$ip){
return 0 if $_ > 255;
}
1
}