Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Удаление строк...


Автор: _eXpLoReR_ 13.9.2004, 19:26
Удаление строк...

Приветствую!
Сразу же перехожу к сути вопроса. Есть массив. В него загнаны, например, 4 строки:

rows.txt

Цитата

1|первая строка|321|
2|вторая строка|11|
3|третья строка|3222|
4|четвертая строка|32|


split... 1 значение в строке - её номер, 2 значение - название, 3 значение - пусть будет значение самой строки. Но это не столь важно... так вот...

во-первых, нужно удалить строку...

Удаляем 3 строку!!!
Посылаю с помощью HTML значение $del... т.е. $del = 3...
Как это делал я (банально и просто):

Цитата

open (F, "rows.txt");
@rows = <F>;
close (F);

foreach (@rows) {
($num,$name,$value)=split(/\|/,$rows[$del-1]);
}

$rows[$del-1]="";

open (F,">rows.txt");
close (F);

foreach (@rows) {
open (F, ">>rows.txt");
print F $_;
close (F);
}


Т.е. я присвоил строке никакое значение... Теперь 3-я строка удалена... Так делал я... А вот для чего собсна создавал топик - подскажите какие попроще пути удаления строк из массива. Может, с помощью регулярных выражеий? Буду очень рад услышать! Я просто уверен, что они существуют!

Заранее благодарен!

Автор: dimes 14.9.2004, 08:44
Ты не удалил элемент из массива ты просто зделал его пустым. Т.е. элемент остался но он содержит пустоту.
Удаляет элемент так:
splice ( @rows, ($del-1),1);

Цитата

open (F,">rows.txt");
close (F);
foreach (@rows) {
open (F, ">>rows.txt");
print F $_;
close (F);
}


Вот это охинея нужно делать так:

Код

open (F, ">rows.txt");
flock (F,2);
foreach (@rows) {
print F $_;
}
flock (F,8);
close (F);

Автор: ElectricalStorm 14.9.2004, 13:11
Код

while (<DATA>) { print and next unless 3..3 }

__DATA__
1|первая строка|321|
2|вторая строка|11|
3|третья строка|3222|
4|четвертая строка|32|


запускать так
perl script.pl >new_file

Автор: dimes 14.9.2004, 14:29
ElectricalStorm
издеваешся? biggrin.gif

Автор: ElectricalStorm 14.9.2004, 14:34
нет ... просто альтернативное решение ...
а их в Perl как извесно очень много ..... smile.gif

Автор: _eXpLoReR_ 14.9.2004, 20:39
Спасибо, парни! cool.gif cool.gif

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)