Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
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 взято с разломанного недображелателем хостинга, для того, чтобы "поправить все как следует".
{ $a <=> $b } ни фига не редунантно в сорте. { $a cmp $b } редунантно в сорте.
А за говнокод поставил плюс, т.к. операция создания временного файла меня лично раздражает. Да и foreach нафиг не нужен - достаточно было бы
print BK sort { $a <=> $b} @file;
@file - неподходящее название для этой переменной.
Вот оказывается как бывает. Мне не понравилость то, что делает этот код и как он это делает. А оказывается тут еще и стиль отвратителен. Энивей отценка -4 какбыл говорит, что это не говнокод. Так?
Проверки нет - плохо.
А то что делается временный файл, так автор видимо хотел очень быстро заменить
файл другим содержанием (строка: rename "backup.txt", "$filename";)
Так можно было бы блокировку на файл поставить и не париться. вот это было бы правильно.
Вообщем, попахивает новичком.
Воздержусь от голосования.
отсутствие проверок (которые в перле так легко делать) на файл операциях вот это говно.
похоже кто-то копипастил откудато. стиль не консистентный: my $file v. $line; { $a <=> $b } редундантно в сорте.
и если верить имени переменной (@files) то в `print BK "$line"` не хватает "\n".
А за говнокод поставил плюс, т.к. операция создания временного файла меня лично раздражает. Да и foreach нафиг не нужен - достаточно было бы
@file - неподходящее название для этой переменной.
> редундантно
ВНЕЗАПНО в русском языке есть слова "последовательный" и "избыточный"
А то что делается временный файл, так автор видимо хотел очень быстро заменить
файл другим содержанием (строка: rename "backup.txt", "$filename";)
Так можно было бы блокировку на файл поставить и не париться. вот это было бы правильно.
Вообщем, попахивает новичком.
Воздержусь от голосования.
В 8 строке my нету, то есть $line глобальная - плохо.