1. Perl / Говнокод #18761

    −46

    1. 1
    2. 2
    3. 3
    open(my $fh, '<', $file);
    my @lines = split "\n", do { local $/ = undef; <$fh> };
    close($fh);

    Безсмысленная безпощадность. Кто знает, что такое slurp a file в Perl, тот поймёт. Для остальных -- спойлер ниже.
    my @lines = <$fh>;

    Запостил: Elvenfighter, 25 Сентября 2015

    Комментарии (39) RSS

    • Перл говно!
      Ответить
    • local $/ = undef; <$fh>

      Хотел когда-то оформить это отдельным говнокодом
      Ответить
      • А че делает переменная $/?
        Ответить
        • Вроде конец строки, <$f> - прочесть строчку из $f (до конца строки, т.е $/). Если записать туда undef, то <> прочтет до конца файла.
          Ответить
          • Пидар образовательный
            Ответить
            • Мне один плюс, ему - 2. Ясно.
              Ответить
              • You came to the wrong neighbourhood, motherfucker 3_14dar.
                Ответить
              • Это общеизвестный факт: юмор часто инвариантен относительно ЯП и тем разговора, из-за чего находит своих сторонников с большей вероятностью, чем сухая информация по определённой теме, которая интересна крайне малому количеству людей.
                Ответить
                • Да ладно, не пизди. Написал бы кто-то другой, тот же борманд - было бы 4 плюса.
                  Ответить
        • http://perldoc.perl.org/perlvar.html#Variables-related-to-filehandles
          > IO::Handle->input_record_separator( EXPR )
          > $INPUT_RECORD_SEPARATOR
          > $RS
          > $/
          > The input record separator, newline by default. This influences Perl's idea of what a "line" is. Works like awk's RS variable, including treating empty lines as a terminator if set to the null string (an empty line cannot contain any spaces or tabs). You may set it to a multi-character string to match a multi-character terminator, or to undef to read through the end of file. Setting it to "\n\n" means something slightly different than setting to "" , if the file contains consecutive empty lines. Setting to "" will treat two or more consecutive empty lines as a single empty line. Setting to "\n\n" will blindly assume that the next input character belongs to the next paragraph, even if it's a newline.


          Отакот.
          Ответить
          • >or to undef to read through the end of file.
            Блядь, так это говно еще и официально! Кто теперь скажет что перл хороший а в говнокоде виноваты программисты?
            Ответить
            • 3_14dar, иди напитон, пидар!
              Ответить
              • Зря ты так. 3_14dar по делу же написал, а не скатился в виндусолинухосрач или в политосрач, как обычно.
                Ответить
                • Что не так то просто для него, давайте похлопаем
                  Ответить
            • Перл говно! (но тут почему-то минусуют за это очевидное утверждение)
              Ответить
              • Тут вообще капитана Очевидность почему-то недолюбливают...
                Ответить
              • Красноглаз пишет что перл говно? Или ты макоблядь?
                Ответить
                • > Красноглаз пишет что перл говно?
                  Это чему-то противоречит?
                  Ответить
                  • Но красноглазы же должны любить перл и баш, чем уёбищнее и нечитаемее - тем лучше.
                    Ответить
                    • >должны любить перл и баш, чем уёбищнее и нечитаемее - тем лучше.
                      Гы-гы. sed, сёма, sed забыл. Хотя пёрл круче, не спорю.
                      Ответить
                      • И awk.

                        После них perl читабельный и няшный...
                        Ответить
                        • awk хотя бы не состоит на 99% из регулярок. Хотя значков там тоже хватает, да.

                          А после пёрла ПИТОН няшный и читабельный
                          Ответить
                          • Недавно код на sed'е попадался, который зависимости сишного файла конвертирует в инклуд для мейка. Вот где пиздец так пиздец... Сейчас найду его.
                            Ответить
                          • Вот он:
                            %.d : %.c
                                    $(MAKEDEPEND)
                                    @sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' < $*.Td > $@; \
                                       rm -f $*.Td; [ -s $@ ] || rm -f $@
                            Салат из баша, мейка и седа. Чем-то брейнфак напоминает... Или даже J.
                            Ответить
                            • Не шокирует. Я таких пиздецов в рукописных configure && make по 500-1000 строк уже понасмотрелся.

                              что делает autofuck - отдельный ужас.
                              Ответить
                            • ты не видел систему сборки нашего проекта на Erlang,Java,C,C++ и IDL с кодогенерацией и под пять разных архитектур от линукса на x86_64 до соляры на ppc, реализованную в виде одного Makefile и десятков баш-скриптов
                              вот ЭТО звиздец
                              Ответить
                            • Сатана здесь, сатана рядом....
                              Ответить
                          • Он после чего угодно довольно простой, после некоторого привыкания, естественно.
                            Ответить
                        • Такое впечатление что перл - это язык сделанный на основе awk и заодно доказательство, что так делать не стоит. На SO был и обратный популярный вопрос - почему языки программирования не рулят как шелл скрипт.
                          Ответить
                          • > почему языки программирования не рулят как шелл скрипт

                            Ну это уже клиника.
                            Ответить
                          • > почему языки программирования не рулят как шелл скрипт
                            Ответ один - в некоторых кейсах писать меньше (за счёт проигрыша во всех остальных, но всем похуй).
                            Ответить
                • >> Красноглаз пишет что перл говно?

                  А как привязанность к никсам должна привязывать к перлу?
                  Ответить
      • показать все, что скрытоvanished
        Ответить

    Добавить комментарий