Почему Perl является лучшим выбором для большинства задач обработки строк?

Действительно ли Холст крайне важен для Вашего окна? В противном случае попытайтесь удалить его и сохраните Сетку как основную панель. Холст не имеет никакого размера, если не определено, в то время как Сетка обычно занимает все свободное место. В Холсте Сетка не будет иметь никакого свободного места.

23
задан brian d foy 29 September 2009 в 23:24
поделиться

11 ответов

Это очень субъективно, поэтому Я бы не сказал, что Perl - лучший выбор, но это, безусловно, правильный выбор для обработки строк. Другими альтернативами являются Tcl, Python, AWK и т. Д.

Мне нравятся возможности Perl, потому что он имеет отличную поддержку (лучше, чем POSIX, как указано в комментарии) для быстрых регулярных выражений, а неявные переменные позволяют легко выполнять базовую обработку строк с помощью очень мало кода.

Если у вас есть опыт работы с * nix, многое из того, что вы уже знаете, применимо и к Perl, что делает его довольно легким для понимания многими людьми.

17
ответ дан 29 November 2019 в 01:10
поделиться

Perl -> Практическое извлечение и Язык отчетов

Сила Perl (когда дело доходит до обработки строк) заключается в его очень мощном механизме регулярных выражений .

Из-за этого многие люди в области биоинформатики используют Perl в качестве своего основной инструмент, отсюда большое количество сообщений о BioPerl на PerlMonks . В биоинформатике они много работают со строками, они называют их «последовательностями» (я мало что знаю об этом).

Perlmonks.org - сердце сообщества Perl, обратите внимание на огромное количество обращений при поиске site: perlmonks.org regex 20 000 совпадений

Вы не можете игнорировать огромное количество модулей на CPAN :

Это очень яркое свидетельство того, что Perl - очень мощный язык, когда дело касается обработки строк.

Итак, если вы хотите сделать некоторая обработка строк, и вы используете Perl, вы это сделали :)

14
ответ дан 29 November 2019 в 01:10
поделиться

Чтобы ответить на вторую часть вашего вопроса: репутация Perl в качестве источника шума на линии исходит от четырех типов людей:

  • Чрезмерно умные (для их же блага) хакеры (или иногда просто хаки), которые ценят ум и хвастовство над удобочитаемостью. «Если бы было трудно писать, то было бы трудно читать» - это НЕ просто миф.

  • Люди, которые не знали бы хорошей разработки программного обеспечения, если бы она поразила их по голове подсказкой. Например, люди, которые сохраняют пару символов в программе, используя $ _ вместо именованной переменной. Во вложенной области. Или никогда не слышал о комментариях. Или самодокументирующиеся идентификаторы. Или пробел.

  • Люди, которые думают, что разработка программного обеспечения == код для гольфа. А если серьезно, то чем меньше символов в коде, тем он читабельнее, потому что они неправильно понимают, что означает «краткость» в коде.

    (ПРИМЕЧАНИЕ: первые 2 набора не являются взаимоисключающими)

  • Люди, которые кодируют / взламывают perl (например, системные администраторы), у которых очень мало обучения, опыта или стимулов для выполнения разработка программного обеспечения. Например, процент людей, использующих Perl, которые делают быстрые и грязные взломы с плохим стилем и худшим качеством кода, вероятно, выше, чем, скажем, Python.

    Для справки, 80% ужасного «кода» Perl в моей $ работе подпадает под это - он был написан финансовыми аналитиками, которые достаточно умны, чтобы взять книгу Perl и некоторые более ранние сценарии, клонировать сценарий, который выполняет что нужно для бизнеса, и у вас нет опыта в программировании и CS, чтобы беспокоиться о том, насколько читабельным / поддерживаемым был их код.

Другими (и менее ехидными) словами, вы можете писать красиво, невероятно читаемое и простое в обслуживании программное обеспечение на Perl. Все зависит от того, кто пишет, каковы их приоритеты и навыки. Кроме того, , как и любой другой язык , с ним можно написать жалкую неразбериху только для записи.

Отличие от других языков состоит в том, что очень часто доступность только для записи, когда это делается в Perl, действительно состоит из очень высокой плотности небуквенных символов (sygils и специальных символов в плохо написанных RegExes). Такая высокая плотность действительно может асимптотически аппроксимировать линейный шум.

доступность только для записи этого беспорядка, когда это сделано в Perl, действительно состоит из очень высокой плотности небуквенных символов (sygils и специальных символов в плохо написанных RegExes). Такая высокая плотность действительно может асимптотически аппроксимировать линейный шум.

доступность только для записи этого беспорядка, когда это сделано в Perl, действительно состоит из очень высокой плотности небуквенных символов (sygils и специальных символов в плохо написанных RegExes). Такая высокая плотность действительно может асимптотически аппроксимировать линейный шум.

9
ответ дан 29 November 2019 в 01:10
поделиться

Потому что это то, для чего создан Perl. Потому что Perl выразительный, мощный и быстрый. Я много раз обыгрывал специализированные продукты с маленьким и грязным скриптом на perl, написанным за несколько минут. Например, внешнее соединение и большое соединение по сравнению с MySQL (только потому, что не может выполнить соединение слиянием), обработка ETL по сравнению с Java Hadoop (потому что у меня есть многолетний опыт написания его эффективно, а уровень ввода-вывода Perl просто великолепен) и так и так .

6
ответ дан 29 November 2019 в 01:10
поделиться

Perl is widely used for string manipulation tasks as its string manipulation API is easy to learn. And also its regex is widely used. It has been in use for a very long time and anyone with a Unix background would pick up perl very easily. Historically, perl was developed in the late 80's for report processing tasks and was "originally" developed for text processing tasks. So till date, the trend continues as anyone with a string manipulation task or text processing task would opt for perl as the first choice. Its not that other languages like python arent up to the task, but perl's popular in this area.

2
ответ дан 29 November 2019 в 01:10
поделиться

Дети в наши дни! Когда-то у нас было только СНОБОЛ - и нам понравилось! Попробуйте как-нибудь ... никогда не угадаете, возможно, вам захочется прибегнуть к чему-нибудь приличному, когда это увлечение Perl начнёт действовать!

4
ответ дан 29 November 2019 в 01:10
поделиться

It's a very subjective question. Perhaps the true answer is that Perl has a nice syntax (incl. the regex syntax) that makes people want to sign it high praises over other languages? IMHO, any language that supports a rich regex syntax would be considerablly powerfull at string manipulation.

5
ответ дан 29 November 2019 в 01:10
поделиться

Мне очень нравится Perl, я пишу о нем книги, издаю об этом журнал и так далее. Не думаю, что когда-нибудь скажу, что это лучший язык для чего-либо. Многое из этого связано с задачей, которую вам нужно выполнить. Для многих задач обработки строк, ETL, очистки данных и т. Д. Perl - очень сильный и способный язык. У вас не возникнет таких проблем с выполнением простых задач.

Ваш комментарий звучит так, как будто он был написан в начале 1990-х годов, когда остальной мир еще не догнал его. Многие динамические языки теперь готовы к работе, поэтому, возможно, вам не придется переключать языки. Если вы решите использовать Perl и столкнетесь с проблемами, здесь есть множество людей, готовых помочь, и не все из нас будут винить вас, если вы выберете что-то другое. :)

2
ответ дан 29 November 2019 в 01:10
поделиться

Вначале Perl был разработан для простой обработки отчетов и работы с текстовыми файлами, поэтому он получил очень сильную поддержку REGEX. Большую часть информации о REGEX вы можете найти в perldoc .

1
ответ дан 29 November 2019 в 01:10
поделиться

Я не согласен с тем, что Perl - лучший язык для обработки текста. Простые вещи легко; заменить foo на bar:

$data =~ s/foo/bar/g;

Но сложнее не так просто. Взгляните, например, на Data :: SExpression . Чтобы сделать что-то очень простое, требуется много кода.

Аналогичная реализация в Haskell с PArrow выглядит примерно так:

import Text.ParserCombinators.PArrow

data Atom = QuotedString String | Symbol String
          deriving (Show, Eq)

data Sexp = Sexp [Sexp] | Atom Atom
          deriving (Eq)


quotedString :: Char -> Char -> MD a Atom
quotedString quoteChar escapeChar = between q q inside >>^ QuotedString
    where q = char quoteChar
          inside = many $ (char escapeChar >>> anyChar) <+> notChar quoteChar

doubleQuotedString, symbol :: MD a Atom
doubleQuotedString = quotedString '"' '\\'
symbol = word >>^ Symbol

atom, sexp :: MD a Sexp
atom = (doubleQuotedString <+> symbol) >>^ Atom
sexp = atom <+> (between (char '(') (char ')') sexp' >>^ Sexp)
       where sexp' = sepBy1 sexp spaces

Just sayin '. Perl - это не окончательный вариант манипуляции с текстом. Есть много причин предпочесть Perl другим языкам, но синтаксический анализ не является одной из них.

1
ответ дан 29 November 2019 в 01:10
поделиться

Perl was the go-to language for a long time. The problem is it can be pretty messy and difficult to maintain (some people can write Perl that avoids this, but it is very easy to wrote ugly code). I would not tell you to avoid Perl, but many have moved on to some modern alternatives.

I would recommend learning one of the newer scripting languages such as Python or Ruby. Both will work very well for your needs, and can easily handle more difficult tasks later on. They're both quite nice to work in, after having written C and Perl for so long.

In short, Perl would be a good hammer for this nail. Python and Ruby would be nail-guns.

0
ответ дан 29 November 2019 в 01:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: