Автор Тема: Строки в файле  (Прочитано 4182 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн alex007

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 835
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.russians-in-london.co.uk/
Строки в файле
« : 04 Декабря 2002, 23:54:54 »
Вот у меня есть файл в котором строки выглядят так:

юзверь|пароль|мыло
юзверь2|пароль2|мыло2
юзверь3|пароль3|мыло3
юзверь4|пароль4|мыло4

Каким макаром возможно на перле выбрать из этого списка юзверь3 и отредактировать его пароль или мыло.

Жду ответов.

С Уважением,
Алекс
Русские-в-Лондоне. Как они там? Интересно. Инфо (FAQ), Форум и Магазин

Оффлайн КшЫуфксрук

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 99
  • +0/-0
  • 0
    • Просмотр профиля
    • http://risearch.org/
Строки в файле
« Ответ #1 : 05 Декабря 2002, 00:03:18 »
Точно таким же, как и на любом другом языке: читать построчно, писать в новый файл, дойдя до нужной строки, подредактировать ее, продолжить. Потом новый файл переименовать в старый. Поскольку файлы с паролями обычно небольшие, можно весь файл загнать в массив.

Оффлайн alex007

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 835
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.russians-in-london.co.uk/
Строки в файле
« Ответ #2 : 05 Декабря 2002, 00:18:12 »
КшЫуфксрук
Читаем построчно дело выглядит так:
open(File, "test.dat") || die;
   while ($line = )
       {
           print $line;        
       }
   close(InFile);

А как дальше...
Русские-в-Лондоне. Как они там? Интересно. Инфо (FAQ), Форум и Магазин

Оффлайн glebushka

  • студент
  • Ветеран
  • *****
  • Сообщений: 944
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.intellectuals.ru
Строки в файле
« Ответ #3 : 05 Декабря 2002, 00:59:47 »
#!/usr/bin/perl -w
use strict;
open InFile, "< test.dat";
my @line=;
close(InFile);
chomp @line;
my ($line, @temp);
open InFile, "> test.dat";
foreach $line (@line){
@temp=split(/|/, $line);
if($temp[0] eq "юзверь3"){
$temp[0]="юзверь3+";
$temp[1]="пароль3+";
$temp[2]="мыло3";
$line="$temp[0]|$temp[1]|$temp[2]";
}
print InFile $line, "\\n";
}
close(InFile);
Ну к чему все это, лучше бы водки выпили...

Оффлайн alex007

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 835
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.russians-in-london.co.uk/
Строки в файле
« Ответ #4 : 05 Декабря 2002, 01:15:06 »
glebushka
Спасибо
Русские-в-Лондоне. Как они там? Интересно. Инфо (FAQ), Форум и Магазин

Оффлайн alex007

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 835
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.russians-in-london.co.uk/
Строки в файле
« Ответ #5 : 08 Декабря 2002, 19:49:26 »
glebushka
Не работает твой скрипт, вернее то что надо на делает, а делает следующее:

юзверь|пароль|мыло

юзверь2|пароль2|мыло2

юзверь3|пароль3|мыло3

юзверь4|пароль4|мыло4

тоесть после каждой строчки, добавляет пустую строку.
Русские-в-Лондоне. Как они там? Интересно. Инфо (FAQ), Форум и Магазин

Оффлайн glebushka

  • студент
  • Ветеран
  • *****
  • Сообщений: 944
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.intellectuals.ru
Строки в файле
« Ответ #6 : 09 Декабря 2002, 01:52:50 »
упс. ну немного ошибся;-))
Цитировать
@temp=split(/|/, $line);

а надо так:
@temp=split(/\\|/, $line);
Самолично проверил - работает;-))))
Но дело даже не в этом, судя по твоему выводу ты строчку
chomp @line;
забыл добавить, а зря:-))))
Ну к чему все это, лучше бы водки выпили...

Оффлайн alex007

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 835
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.russians-in-london.co.uk/
Строки в файле
« Ответ #7 : 07 Января 2003, 02:01:06 »
glebushka
Спасибо тебе за помощь, немог ли ты подсказать как удалить мне строку выберая юзверь3 вот привожу два примера твоего же скрипта:

1) Удаляет все подрят, но оставляет первую строчку
open (FILE, "<$pass")|| die "Couldn\'t open file: $pass: $! \\n";
my @line=;
close(FILE);
chomp @line;
my ($line, @temp);
open (FILE, ">$pass")|| die "Couldn\'t open file: $pass: $! \\n";
foreach $line (@line){
@temp=split(/\\|/, $line);
if($temp[0] eq юзверь3){
$temp[0]="";
$temp[1]="";
$temp[2]="";
$line="";
}
print FILE $line;
}
close(FILE);

2) Удаляет правильную строчку, но оставляет её пустой.
open (FILE, "<$pass")|| die "Couldn\'t open file: $pass: $! \\n";
my @line=;
close(FILE);
chomp @line;
my ($line, @temp);
open (FILE, ">$pass")|| die "Couldn\'t open file: $pass: $! \\n";
foreach $line (@line){
@temp=split(/\\|/, $line);
if($temp[0] eq юзверь3){
$temp[0]="";
$temp[1]="";
$temp[2]="";
$line="";
}
print FILE $line, "\\n";
}
close(FILE);

Как дописать твой пример/скрипт что бы он удалел правильную строчку и не оставлял ее пустой?

Жду ответов.

С Уважением,
Алекс.
Русские-в-Лондоне. Как они там? Интересно. Инфо (FAQ), Форум и Магазин

Оффлайн Mog.

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 828
  • +0/-0
  • 0
    • Просмотр профиля
Строки в файле
« Ответ #8 : 07 Января 2003, 07:54:21 »
Вместо
if($temp[0] eq юзверь3){
$temp[0]="";
$temp[1]="";
$temp[2]="";
$line="";
}

напиши (в варианте №2)

if($temp[0] eq юзверь3) {next}

скрипт пропустит эту строку и не станет перезаписывать её в файл.
Все болезни от нервов, только сифилис от удовольствия

Оффлайн alex007

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 835
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.russians-in-london.co.uk/
Строки в файле
« Ответ #9 : 07 Января 2003, 23:16:08 »
Mog.
Спасибо.
Русские-в-Лондоне. Как они там? Интересно. Инфо (FAQ), Форум и Магазин

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28