- 1
- 2
- 3
- 4
- 5
- 6
- 7
sub trim_string
{
my($sref) = $_[0];
$$sref =~ s/^\s+//g;
$$sref =~ s/\s+$//g;
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−210.4
sub trim_string
{
my($sref) = $_[0];
$$sref =~ s/^\s+//g;
$$sref =~ s/\s+$//g;
}
Написано владельцем одной известной говнокомпании, который утверждает, что программировать может каждый.
1). В избыточности лексической переменной $sref и модификатора "g". Все то же самое можно было написать так:
sub trim_string {
$$_[0] =~ s/^\s+//;
$$_[0] =~ s/\s+$//;
}
Или так:
sub trim_string {$$_[0] =~ s/^\s+|\s+$//g}
2). Ну, а если бы говноатор знал о Perl чуть больше, чем ему подсказывала интуиция, то передавать скалярную переменную по ссылке в функцию trim_string() не стал бы вообще, ограничившись модификацией первого элемента @ARG.
Дайте я угадаю - вы одинокий псих-неудачник, склонный к истерикам или к занудству.
[quote]1). В избыточности лексической переменной $sref и модификатора "g". Все то же самое можно было написать так:[/quote]
И что ваша первая функция выдаст на строке
без модификатора g ? Выдаст она неверный результат.
Безусловно бело зависит от контекста. ИМХО не говнокод это.
[quote=klem4]И что ваша первая функция выдаст на строке
1.my $s = " я \n строк \n ка \n ";[/quote]
Чтобы результат совпал с ожиданиями надо поставить фигурные скобки вокруг $_[0], вот так: ${$_[0]} Это я не доглядел. А модификатор "g" здесь не нужен.
Вы даже не неудачник - Вы быдлокодер, который не проверяет свой код!
она и с g не даст результата, надо еще m
sub trim_string { my ($ref) = shift; return $ref =~ s/^\s+|\s+$/; }
Просто s/^\s+|\s+$/; удалит только пробелы в начале строки, в конце не удалит.
Просто встретит первое попавшееся и удалит и закончит на этом работу.
{
my $ref = shift;
s/^\s+//, s/\s+$// for $ref;
return $ref;
}
1. Забрать параметр явно
2. В перле так можно делать и читается неплохо вроде
3. Явно отдать параметр
P.S. Читабельно в одну строчку написать не получиться. Так что 1 и 3 нужны по любому.