- 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;
}
Написано владельцем одной известной говнокомпании, который утверждает, что программировать может каждый.
guest 17.05.2009 20:47 # +2
guest 18.05.2009 18:51 # −1
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.
guest 10.08.2009 19:03 # +1
zantor 27.04.2010 00:08 # 0
guest 20.05.2009 14:34 # −1
Дайте я угадаю - вы одинокий псих-неудачник, склонный к истерикам или к занудству.
guest 21.05.2009 18:09 # 0
[quote]1). В избыточности лексической переменной $sref и модификатора "g". Все то же самое можно было написать так:[/quote]
И что ваша первая функция выдаст на строке
без модификатора g ? Выдаст она неверный результат.
Безусловно бело зависит от контекста. ИМХО не говнокод это.
Oleg_quadro 03.10.2009 01:01 # 0
guest 29.05.2009 06:00 # 0
[quote=klem4]И что ваша первая функция выдаст на строке
1.my $s = " я \n строк \n ка \n ";[/quote]
Чтобы результат совпал с ожиданиями надо поставить фигурные скобки вокруг $_[0], вот так: ${$_[0]} Это я не доглядел. А модификатор "g" здесь не нужен.
guest 02.07.2009 23:45 # 0
Вы даже не неудачник - Вы быдлокодер, который не проверяет свой код!
guest 03.08.2009 00:10 # 0
она и с g не даст результата, надо еще m
guest 11.08.2009 10:08 # 0
guest 31.08.2009 21:04 # 0
sub trim_string { my ($ref) = shift; return $ref =~ s/^\s+|\s+$/; }
guest 04.09.2009 13:32 # 0
Oleg_quadro 03.10.2009 01:06 # 0
Просто s/^\s+|\s+$/; удалит только пробелы в начале строки, в конце не удалит.
Просто встретит первое попавшееся и удалит и закончит на этом работу.
guest 04.06.2010 15:40 # 0
{
my $ref = shift;
s/^\s+//, s/\s+$// for $ref;
return $ref;
}
1. Забрать параметр явно
2. В перле так можно делать и читается неплохо вроде
3. Явно отдать параметр
P.S. Читабельно в одну строчку написать не получиться. Так что 1 и 3 нужны по любому.