=()= / Говнокод #26003 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
#!/usr/bin/perl

# Fetch all JS from govno
use strict;
use warnings FATAL => 'all';
use LWP;

my $res = LWP::UserAgent->new->request(HTTP::Request->new("GET" => "http://govnokod.xyz/"));
die "Failed: " . $res->code unless $res->is_success;

for (split /\n/, $res->content) {
    print if /<script/ ... /script>/ and !m/[<>]/;
}

кууик.

Официальный тред для ржания над пятым перлом

Запостил: MAKAKA MAKAKA, (Updated )

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

  • #!/usr/bin/php тоже сработает?
    Ответить
        • При том, что в нём вообще шебанг игнорируется.

          Первоначальный вопрос про что? Какие начальные условия?
          Ответить
          • Можно ли исполняемые скрипты на "PHP" таким же образом писать? На прыщах, естественно.
            Ответить
              • И как прыщи понимают что нужно передать программе? Или просто всё в stdin?
                Ответить
                • А, наверное просто /usr/bin/pitux script.ptx делают. Но что, если в моём языке комментарий не с # начинается?
                  Ответить
                  • Exactly. Можно даже написать  /usr/bin/nemyx --huj --pizda --script если нужны доп. параметры. Кстати, хороший вопрос, а есть ли прыщескриптоязык, где решетка - не коментарий. Сходу не могу такой припомнить.
                    Ответить
                  • Хотя с "PHP" всё еще интереснее.
                    Соснольный скрипт на "РНР" выглядит следующим образом
                    #!/usr/bin/php
                    <?php
                    echo 'Hello';

                    И, по идее, "PHP" всё, что находится до тега, должен был бы высрать на экран. Но он в данном случае делает исключение ТОЛЬКО для первой строки ТОЛЬКО начинающейся на "#!". Так что скрипт вида
                    #! trololo
                    <?php $x = 42; ?>
                    #! azaza

                    выведет на экран только "#! azaza"

                    Именно поэтому я за "PHP".
                    Ответить
                    • В ноде джейсоне похоже так же. Там нету комментария с решеткой, но шебанг написать можно.
                      Ответить
                      • Ideone исполняет «PHP» через «php-cli» — специальный соснольный интерпретатор, который совместим с «башем», поэтому вырезает первую строку, если она начинается на #.

                        В «FastCGI» и в апачевском модуле может не получиться, нужно проверять.
                        Ответить
                        • Там всё, конечно, интереснее, это же "PHP". На самом деле это зависит от SAPI:
                          * cli -- скипает шебанк
                          * cgi -- какого-то хуя настраивается в небезызвестном PHP.IИI https://www.php.net/manual/ru/ini.core.php#ini.cgi.check-shebang-line
                          * остальные -- не обрабатывают шебанг.

                          (могу ошибаться, лишь бегло почитал исходники)
                          Ответить
                          • > какого-то хуя настраивается
                            а какое поведение ты бы сделал по умолчанию?
                            Ответить
                    • Всё дело в том, что скиптовые языки, где к комментарии отличны от "#" просто-напросто не нужны
                      Ответить
                      • Так в пхп решетка - это комментарий. Поэтому он нужен? Но с начала первой строки он невозможен.
                        Ответить
                        • В PHP так же есть комментарий / и /*
                          следовательно, он не нужен
                          Ответить
                          • В питоне есть комментарии """ """ - это вообще пиздец.
                            Ответить
                            • Ну это для докстрок обычно.

                              А в луа есть коментарии
                              --
                              как в SQL:)
                              Ответить
                              • Это для любых строк. Кстати, чем отличаются ''' и """?
                                Ответить
                                • """ многосточные емнип, и их можноиспользовать как докстроки

                                  для строковых литералов """ нужны чтобы не городить document here


                                  """
                                  This module does nothing.
                                  
                                  Author: Petuh <Petuh@example.org>
                                  Version: 1.0
                                  """
                                  
                                  
                                  def do_nothing():
                                      """
                                      This function does nothing
                                      :return: nothing
                                      """
                                      nothing = "one liner"
                                      nothing += """
                                      
                                      yey
                                      
                                      
                                      """
                                      print(nothing)
                                  Ответить
                            • Но это и не комментарий вовсе, я многострочный строковый литерал. Можно написать
                              huj = """
                              pizda
                              """

                              и оно будет работать. Как Гвидо додумался туда пихать док-блоки - питух его знает...

                              То ли дело руби с его
                              =begin
                              =end

                              Мало того, что сам по себе уёбский многобуквенный синтаксис, так еще это говно не работает, если в начале поставить пробел. Больше ни у кого такого уебанства нет, наверное.
                              Ответить
                • Вот это вот всё равносильно тому, как если бы у тебя в «Windows» был bat-файл:
                  @perl.exe pituh.pl %*


                  «Баш» извлекает из строки, начинающейся на #! имя интерпретатора, передаёт ему все аргументы, которые были переданы оригинальному файлу, а стандартные потоки ввода-вывода (stdin, stdout, stderr) наследуются так же, как и при запуске из bat-файла.

                  Задача со звёздочкой: придумать скрипт-полиглот, который в «Windows» можно запустить как bat-файл, чтобы он вызвал интерпретатор другого скриптового языка, и чтобы этот интерпретатор исполнил его без ошибки.
                  Ответить
                  • только конечно не баш, а ядро в своем вызове execv или в либлиотечной функции execve
                    Ответить
                    • Это вот прямо на уровне execv работает? И при замене баша на другой *sh тоже будет работать?

                      Мне как пользователю «Windows» это непривычно. В «Windows» есть CreateProcess, который умеет запускать экзешники и больше ничего, и есть ShellExecute, который умеет сканировать ассоциации файлов в реестре и запускать интерпретатор. Я уже смирился с тем, что для автоматизации нужен лишний слой.
                      Ответить
                      • >Это вот прямо на уровне execv работает?
                        читни манца
                        http://man7.org/linux/man-pages/man2/execve.2.html#NOTES

                        >И при замене баша на другой *sh тоже будет работать?
                        Разумеется.
                        Может вообще без шела работать.

                        Допустим, загружается машина с sysv init скриптами (/etc/init/rc.3/..) или с rc скриптами в духе bsd (/etc/rc) или slackware.

                        Эти скрипты запускает init, а не sh.
                        Вот пример
                        https://www.freebsd.org/doc/en_US.ISO8859-1/articles/rc-scripting/rcng-dummy.html

                        И они работают:) Кстати, баша на бздях нету

                        Про винду ты прав: CreateProcess ничего такого не умеет, и потому даже "Run as administrator" для элевации надо делать через ShellExecute

                        Зато в ShellExecute можно открыть вообще даже вовсе и не файл, а объект по GUIDу
                        Ответить
              • https://ru.wikipedia.org/wiki/Suid

                Атрибут есть такой в никсах у файлов, которые можно запускать. Если атрибут сброшен, то процесс создастся от имени того, кто запустил. Если атрибут установлен, то процесс создастся от имени владельца файла (если владелец root, то программа получит право распидорасить систему).
                Ответить
  • вот вам головоломочка
    my @words;
    sub foo :lvalue {
        $words[@words];
    }
    
    &foo(1) = "hello";
    &foo(2) = "world";
    
    print join " ", @words; #Print "hello world"

    угадайте, как оно работает
    Ответить
      • Кстати, ты совершенно прав. Если есть в мире язык именно для красноглазых, то это перл:)
        Ответить
        • my @ROOSTERS = qw/stertor syoma oslik sooslik poukan webkill/;
          
          
          sub fucking {
              $a cmp $b;
          }
          
          sub trying {
              "Cant sort roosters";
          }
          
          
          print join " ", sort fucking (@ROOSTERS) or die trying;

          DSL вмоем пирле
          Ответить

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

Переведи на "PHP", guest!

    А не использовать ли нам bbcode?


    8