- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
sub PrintToFile {
my ($filename, @file) = @_;
@file = sort {$a <=> $b} @file;
open BK, ">backup.txt";
foreach $line(@file) {
print BK "$line";
}
close BK;
rename "backup.txt", "$filename";
unlink "backup.txt";
}
А вот так мы записываем в файл. И нас не интересует многопоточность или проверка имени файла (в вызывающей функции тоже нет). А не записать ли нам ../index.html?
Прошу не кидаться калом. Первый раз вижу перл. Может быть так и надо? Волшебник-интерприатор все поправит, и не даст сучиться ужасному?
ps взято с разломанного недображелателем хостинга, для того, чтобы "поправить все как следует".
Dummy00001 12.05.2010 15:12 # +1
отсутствие проверок (которые в перле так легко делать) на файл операциях вот это говно.
похоже кто-то копипастил откудато. стиль не консистентный: my $file v. $line; { $a <=> $b } редундантно в сорте.
и если верить имени переменной (@files) то в `print BK "$line"` не хватает "\n".
ichesnokov 13.05.2010 19:54 # +2
А за говнокод поставил плюс, т.к. операция создания временного файла меня лично раздражает. Да и foreach нафиг не нужен - достаточно было бы
@file - неподходящее название для этой переменной.
cfdev 12.05.2010 19:39 # +9
> редундантно
ВНЕЗАПНО в русском языке есть слова "последовательный" и "избыточный"
da4ever 13.05.2010 23:53 # −1
Oleg_quadro 19.05.2010 22:54 # 0
А то что делается временный файл, так автор видимо хотел очень быстро заменить
файл другим содержанием (строка: rename "backup.txt", "$filename";)
Так можно было бы блокировку на файл поставить и не париться. вот это было бы правильно.
Вообщем, попахивает новичком.
Воздержусь от голосования.
Oleg_quadro 19.05.2010 22:58 # 0
В 8 строке my нету, то есть $line глобальная - плохо.
Oleg_quadro 19.05.2010 23:01 # 0