Forum Webscript.Ru
Программирование => Perl => Тема начата: Yaroslav от 18 Июля 2003, 01:38:50
-
посоветуйте пожалуйста как сделать:
open (FILE,"file.txt"); #список email построчно
если в этом файле нет xxx-email, тогда добавляем его
а то у меня вариант крутится какой то неудобный, через for это сделать, но каэется что будет это через ж....
-
Дык два варианта - либо через for, либо весь файл в массив считывать.
-
Можно в переменную считать ($/=undef) и регекспом чекить.
-
Chs:
Дык два варианта - либо через for, либо весь файл в массив считывать.
так как я представил, то вроде как и получается через ж....
или все таки это будет оптимально:
for ($i=0;$i=@file;$i++;) {
if ($file[$i] eq "нужный мыло") { $a=1; }
}
if ($a ne "1") { печатать в файл мыло }
Wyclef:
Можно в переменную считать ($/=undef) и регекспом чекить.
???
-
Если все в одну строку, то и regexp не нужен:
if(!index($all_emails_in_one_str,$check_email)){add_email($check_email);}
-
Yaroslav
open F, ...
$/ = undef;
$file = ; #все содержимое файла в переменной
туда, же, может пригодится...
while () {
$exist++ if $_ eq "новое мыло";
last if $exist;
}
unless ($exist) {
#добавляем мыло
}
n0name
Угу, TMTOWTDI... ;)
-
Wyclef:
Wyclef
посмотрел чуток, поковырял и пришел вот к этому:
open (FILE, "nmail.txt");
while () {
chomp ($_);
if ($_ eq "$mail") { $i=1; exit; }
}
if ($i<1) {
open (FILE, ">>nmail.txt");
print FILE "$mail\\n";
}
что скажите?
-
Убрал лишнее:
open (FILE, "nmail.txt");
while () {
chomp;
exit if $_ eq $mail;
}
open (FILE, ">>nmail.txt");
print FILE "$mail\\n";
-
Wyclef:
Убрал лишнее:
спасибо. где ты такой синтаксис нашел? у меня в книге только "exit;" "if ($_ eq "$mail")" "chomp ($_);"
мдя....
только я не учел что в таком случае будет останавливатся весь скрипт, а мне надо что б он продалжал работу
-
спасибо. где ты такой синтаксис нашел?
Всегда пожалуйста. Из личного опыта ;)
будет останавливатся весь скрипт, а мне надо что б он продалжал работу
Используй варинт с переменной, выше...
-
получилось вот так и работает :))
open (FILE, "$tmails");
NMAIL: while () {
if ($_ eq $line[8]) { $n=1; last NMAIL; } }
if ($n<1) {
open (FILE, ">>nmail.txt");
print FILE "$line[8]\\n"; }
-
1. Нафиг тебе метки NMAIL - достаточно просто last оставить;
2. Ну и запишешь ты в файл nmail.txt 10 одинаковых строк при 10-ти вызовах. Или так и надо?
-
Wyclef:
1. Нафиг тебе метки NMAIL - достаточно просто last оставить;
с last у меня не работало
Wyclef:
2. Ну и запишешь ты в файл nmail.txt 10 одинаковых строк при 10-ти вызовах. Или так и надо?
гогда запишу? тот код что был последним не записывает если есть одинаковая строчка
-
тот код что был последним не записывает если есть одинаковая строчка
Понял, просто у тебя сначала написано:
open (FILE, "$tmails");
а потом:
open (FILE, ">>nmail.txt");
Я подумал ты с разными файлами работаешь, а на самом деле с одним...