![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
geta1swa |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 22.7.2008 Где: Dnepropetrovsk Репутация: нет Всего: нет |
Добрый вечер!
Плдскажите плиз есть файл такого содержания: 10.20.159.77 Wed Aug 6 22:02:15 2008 10.20.159.100 Wed Aug 6 22:02:15 2008 10.20.159.111 Wed Aug 6 22:02:15 2008 нужно открыть файл и проверить на совпадения если таких нет записать в файл привожу код: #!/usr/bin/perl my $time=localtime (time); my @host=('10.20.159.77','10.20.159.100','10.20.159.111','192.33.33.11'); foreach my $ip (@host) { open (C, "</ip/ip-time.dat") or die print "Can't open file ip-time.dat\n" ; while (<C>) { my ($ip2, $time1, $time2, $time3, $time4, $time5) = split /\s+/; if ($ip eq $ip2) { print "$ip2 down! $time1 $time2 $time3 $time4 $time5 \n"; } else { next; } open ( C, ">>/ip/ip-time.dat") or die print "Can't open file ip-time.dat\n" ; print C "$ip $time\n"; } } close ©; не работает: open ( C, ">>/ip/ip-time.dat") or die print "Can't open file ip-time.dat\n" ; print C "$ip $time\n"; не пишет в файл, результат в файле должен быть такой: 10.20.159.77 Wed Aug 6 22:17:33 2008 10.20.159.100 Wed Aug 6 22:17:33 2008 10.20.159.111 Wed Aug 6 22:17:33 2008 192.33.33.11 Wed Aug 6 22:17:33 2008 |
|||
|
||||
nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 37 Всего: 84 |
Обычно
1) или читаем и записываем в новый файл, потом переименовываем - минус время 2) или все изменения храняться "в переменной", затем обновляем файл - минус расход памяти 3) tie - минус ... не запутаться с ним ;) , память тоже но не значительно... как пример:
P.S.: на ночь глядя grep'ую ![]() |
|||
|
||||
geta1swa |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 22.7.2008 Где: Dnepropetrovsk Репутация: нет Всего: нет |
вот примерно то что нужно, пункт 2) но хотелось бы уйти то массива!
#!/usr/bin/perl use Fcntl; my $time=localtime (time); my @a; my $k=0; my @host=('10.20.159.77','10.20.159.100','10.20.159.101','192.33.33.11','10.20.12.16'); foreach my $ip (@host) { sysopen (C, "/ip/ip-time.dat", O_RDWR ) or die print "Can't open file ip-time.dat\n" ; while (<C>) { my ($ip2, $time1, $time2, $time3, $time4, $time5) = split /\s+/; push (@a, $ip2, $time1, $time2, $time3, $time4, $time5 ); } if ($ip eq $a[$k]) { print "$a[$k] $a[$k+1] $a[$k+2] $a[$k+3] $a[$k+4] $a[$k+5]\n"; } else { print C "$ip $time\n"; print "$ip $time\n"} $k=$k+6; } close ©; |
|||
|
||||
nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 37 Всего: 84 |
geta1swa, чем вам 3-ий не подходит?
![]() Если вы хотите использовать №2, то как уйдёте от массива ![]() И на сколько вижу, ваш пример практически не отличается от первого примера ![]() №2, считываем ip-time.dat в массив, закрываем дескриптор на файл, затем сверяем его с вашим @host, вносим в массив изменения, после массив записываем в файл ip-time.dat. А чтение-запись, тут могут возникнуть сложности/ошибки... |
|||
|
||||
geta1swa |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 22.7.2008 Где: Dnepropetrovsk Репутация: нет Всего: нет |
nitr, может ВЫ меня не правильно поняли,суть такая есть переменная которая лежит в @host нужно:
1. отрыть файл пролистать его 2. если есть совпадение взять ее значение йз файла и вывести 3. если нет записать в файл и вывести 4. и ето только в том случае если не прошел ping 5. каждому хосту назначено описание:
порядок вывода тоже необходимо не нарушить Это сообщение отредактировал(а) geta1swa - 9.8.2008, 13:11 |
|||
|
||||
nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 37 Всего: 84 |
geta1swa, а ВЫ меня не поняли
![]() ![]() ![]() Где вы заметили, что у меня иначе, очень даже похоже на ваш код (пинга и в нём нет)?
Добавлено через 23 секунды P.S.: писал прям в форум... |
|||
|
||||
geta1swa |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 22.7.2008 Где: Dnepropetrovsk Репутация: нет Всего: нет |
Спосибо за помощь nitr,
![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |