заменить строку из одного файла в другой файл - PullRequest
0 голосов
/ 21 декабря 2011
open (HAN1, "<test1.txt") || die "not existing!";
open (HAN2, "test2.txt") || die "not existing!";

s/nameserver/nameserver/g;

    print  HAN2 $_;
    }
close(HAN1);
close(HAN2);

~

test1.txt

nameserver 10.66.80.10
nameserver 10.66.80.11
nameserver 10.66.80.11

test2.txt

search test.com
nameserver 99.66.80.10
nameserver 98.66.80.11
nameserver 98.66.80.11  

После запуска скрипта test2.txt он удаляет другое строковое содержимое.

nameserver 10.66.80.10
nameserver 10.66.80.11
nameserver 10.66.80.11

Но нужен результат test2.txt

search test.com
nameserver 10.66.80.10
nameserver 10.66.80.11
nameserver 10.66.80.11

1 Ответ

1 голос
/ 21 декабря 2011

Попробуйте,

    use strict;
    use warnings;
    use Data::Dumper;

    open (HAN1, "<test1.txt") || die "not existing!";
    open (HAN2, "<test2.txt") || die "not existing!";

    my $current;
    my @arr1 = <HAN1>;

    foreach $current (<HAN2>) {
        unless ($current =~ /nameserver/) {
            print $current;
            next;
        }
        foreach  (@arr1) {
            my($first,$second) = split (' ',$_);
            $current =~ s/^(nameserver\s+).+/$_/g;
            chomp($current);
            print $current;
            last;
        }
        shift @arr1;
    }
close(HAN1);
close(HAN2);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...