Модераторы: ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Почему не происходит замены в файле? Скрипт замены слов в файле 
V
    Опции темы
trinitr0
Дата 25.6.2013, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 102
Регистрация: 25.6.2013

Репутация: нет
Всего: нет



Пытаюсь написать скрипт который за менял бы в одну фразу на другую.
 
Код:

Код

#!/use/bin/perl -w

use strict;

open(OF, "+< /var/www/d-link/conf")

    while(<OF>)
    {
        chomp;
        $_ = "create account admin sa";
        $_ =~ s/sa/*/g;
        print OF $_;
    }
close(OF);


После выполнения #perl ./var/www/d-link/conf ошибок на консоли нет, а в конец файла conf добавляются "*" и никакой замены не происходит . Помогите пожалуйста! Третий день мучаюсь!  :dash1
PM MAIL Jabber   Вверх
DProf
Дата 25.6.2013, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 28.9.2012

Репутация: нет
Всего: 1



разделите чтение и запись. А то вот строкой print OF $_ Вы куда пишете попробуйте себе объяснить. В какую строку файла? Вывод буферизируется и поэтому ваши "*" только в конце и пишутся. Но даже если буфер отключить ($| = 1) то это Вам не поможет. Делайте так например.  
Код

open(OLD, "<", $old_file) or die $!;
open(NEW, ">", $new_temp_file) or die $!; 
while(<OLD>)
{
    s/sa/*/g;
    print NEW $_;
}

close(NEW);
close(OLD);

#copy new to old:
rename $old_file, "$old_file.backup";
rename $new_temp_file, $old_file;


Над чем тут три дня мучиться? :-)

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
trinitr0
Дата 25.6.2013, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 102
Регистрация: 25.6.2013

Репутация: нет
Всего: нет



Спасибо ОГРОМНОЕ! Поправил по вышем рекомендациям и всё стало так как надо! Спасибо за разъеснение, теперь стало всё понятно. Спасибо!  smile 
И ещё  в конец добавил:

Код
 unlink $old_file.backup; 




Это сообщение отредактировал(а) trinitr0 - 25.6.2013, 17:38
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Регулярные выражения | Следующая тема »


 




[ Время генерации скрипта: 0.0992 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.