LINUX.ORG.RU

История изменений

Исправление annulen, (текущая версия) :

Чтобы понять, как работает этот код, нужно знать об автоматической переменной $_. Этот код можно развернуть в

open (InFile,"wg1.conf");
while ($str=<InFile>)
{
    print "$str";
    $_ =~ s{10.8.100.5/32}{10.8.100.5/32, 192.168.0.0/24}g;
} continue {
    print $_ or die "-p destination: $!\n";
}
close (InFile);

Использование $str для чтения из файла приводит к тому, что автоматическая переменная в цикле больше не заполняется, и остальной код ничего не делает.

Еще здесь есть стилистические недочеты, по которым можно сразу заметить, что код писал новичок: 1) InFile - лучше не использовать bareword-хэндлы (за исключением встроенных - STDIN и т.д.), а если все-таки очень хочется, то называть их КАПСОМ; 2) вместо $str должно быть my $str - тут либо код без strict (что есть зло), либо переменная $str используется в большей области видимости (что тоже зло); 3) в open нужно всегда указывать режим (здесь ‘<’), как минимум для читаемости

Исходная версия annulen, :

Чтобы понять, как работает этот код, нужно знать об автоматической переменной $_. Этот код можно развернуть в

open (InFile,"wg1.conf");
while ($str=<InFile>)
{
    print "$str";
    $_ =~ s{10.8.100.5/32}{10.8.100.5/32, 192.168.0.0/24}g;
} continue {
    print $_ or die "-p destination: $!\n";
}
close (InFile);

Использование $str для чтения из файла приводит к тому, что автоматическая переменная в цикле больше не заполняется, и остальной код ничего не делает.