Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.07.31;
Скачать: CL | DM;

Вниз

Язык для шаманов   Найти похожие ветки 

 
Kerk ©   (2005-07-06 20:30) [0]

Пытаюсь на перле реализовать "кликабельность" ссылок.
Т.е. текст http://sex.com должен заменяться на <a href=http://sex.com>http://sex.com</a>
Пишу вот такой регэксп:

$url =~ s/(http:\/\/.+)([,|\s])/<a class=fileinfolink href=$1>$1<\/a>$2/g;

Отлично выделяет ссылки, которые ограничены в конце пробелом. Запятую же игнорирует и идет до следующего пробела. Кто виноват и что делать?


 
Kerk ©   (2005-07-06 20:56) [1]

Всем спасибо за внимание. Вопрос закрыт. Правильный ответ:

 $url =~ s/(http:\/\/.+?)(,|\s)/<a class=fileinfolink href=$1>$1<\/a>$2/g;

1:0 в пользу телезрителей.

P.S. Viva la Perl


 
Просто Джо ©   (2005-07-06 21:54) [2]


>  [1] Kerk ©   (06.07.05 20:56)
> Правильный ответ:
>
>  $url =~ s/(http:\/\/.+?)(,|\s)/<a class=fileinfolink href=$1>$1<\/a>$2/g;

Это была викторина "найдите 5 отличий"?
;-)


 
Kerk ©   (2005-07-07 10:30) [3]

Да. Обожаю перл за такие штуки :)))


 
Ega23 ©   (2005-07-07 10:39) [4]

2 Kerk ©   (06.07.05 20:30)
Поисковик порнушный пишешь?   :о)


 
Kerk ©   (2005-07-07 10:41) [5]

Ega23 ©   (07.07.05 10:39) [4]

Нет. Просто пример такой привел, чтоб был понятнее и ближе народу. :o)


 
Agent13 ©   (2005-07-07 10:46) [6]


> Нет. Просто пример такой привел, чтоб был понятнее и ближе
> народу. :o)

Ну так и писал бы http://www.delphimaster.ru :)


 
inic ©   (2005-07-07 11:06) [7]

Kerk ©   (06.07.05 20:30)

<ФЛУД>

Страшен все-таки перла синтаксис :(

</ФЛУД>


 
Kerk ©   (2005-07-07 12:00) [8]

inic ©   (07.07.05 11:06) [7]
Страшен все-таки перла синтаксис :(


Зато сколько смысла в ОДНОЙ строке :)
На каком языке ты бы решил сабж более элегантно? :)


 
inic ©   (2005-07-07 12:53) [9]

Kerk ©   (07.07.05 12:00) [8]

Не разбираюсь в этой сфере (правда пытался Perl заучить, но хватило меня только на час прочтения туториала), но мне кажется нечитабельность языка может привести к долгим поискам совершенных ошибок (а они всегда бывают), с другой стороны компактность конечно плюс. Каждому свое, но я бы все же решал такие задачи через PHP (как-то ближе он мне).
Если PHP и Perl понятия разного уровня и я что-то путаю - извиняйте :)

ЗЫ Под "страшностью" имел в виду не уродливость, а сложность ;)


 
Alex Konshin ©   (2005-07-07 13:26) [10]

Мне приходится писать и на Perl тоже. Язык для мазохистов, которые любят создавать себе трудности, а потом героически их преодолевать.
Синтаксис отвратительный, это ж надо умудрится вставить в язык столько контекстных зависимостей. Куча значков со специальным смыслом, причем смысл тоже в разных контекстах может быть разным. Ничего большого делать просто нельзя - поддержка доконает. Если код чужой, то вообще труба. Документация ужасная, хуже может быть только ее отсутствие.
Компктность? Да время на набор нормального названия функции или оператора с лихвой окупается читабельностью кода. Искать же ошибку в перловке - да в гробу я видел такую компактность.

Отличный пример того, как не нужно создавать языки.


 
Alex Konshin ©   (2005-07-07 13:30) [11]

Kerk ©   (07.07.05 12:00) [8]
Зато сколько смысла в ОДНОЙ строке :)
На каком языке ты бы решил сабж более элегантно? :)

APL.
Справедливости ради нужно сказать, что APL вообще читать нельзя.


 
Игорь Шевченко ©   (2005-07-07 13:32) [12]


> APL


Ага. Только характеристики в твоем посте [10] надо умножить на 3 :)

Write-only language


 
TUser ©   (2005-07-07 13:34) [13]

> но мне кажется нечитабельность языка может привести к долгим поискам совершенных ошибок (а они всегда бывают)

Перл этим, конечно, грешит, но г.о. долгий поиск ошибок в нем связан с отсутствие строгой типизации и саморастущими массивами. Скриптовый язык - чего с него взять.


 
Ломброзо ©   (2005-07-07 13:37) [14]

Alex Konshin ©   (07.07.05 13:26)
Мне приходится писать и на Perl тоже. Язык для мазохистов, которые любят создавать себе трудности, а потом героически их преодолевать.

Я категорически против!


Синтаксис отвратительный, это ж надо умудрится вставить в язык столько контекстных зависимостей. Куча значков со специальным смыслом, причем смысл тоже в разных контекстах может быть разным.

Это в зависимости от стиля. Можно использовать соглашения Java/С++, использовать пакеты - тогда код выглядит стройным и красивым. Если не нравится - можно и так, что чёрт ногу сломит.

Документация - вполне на уровне. Есть perdoc - консольная, есть в HTML.


 
TUser ©   (2005-07-07 13:46) [15]

Любой язык провоцирует использовать свои возможности. Вот пример - недавно писал на VBA, а там при желании можно не требовать обязательного объявления переменных. Долго материался пока искал опечатку в названии переменной (из-за чего получалась совершенная чушь). Хотя ведь знал, что нельзя так, что некаширно это - но спровоцировался сделать попроще. Так и с перлом, - если на нем писать, то начинается использование "матерных" конструкций, а потом пляски с бубном. ИМХО.


 
Ломброзо ©   (2005-07-07 13:49) [16]

TUser ©   (07.07.05 13:46)
Любой язык провоцирует использовать свои возможности. Вот пример - недавно писал на VBA, а там при желании можно не требовать обязательного объявления переменных.


ФффФ. option explicit

Так и в перле так же. Не нравятся переменные из ниоткуда - use strict. Есть шанс наступить на грабли с массивами - пишем класс-обёртку, отслеживающую выход за границы массива.

--------
DMJS 0.6 | http://dmjsclient.narod.ru


 
TUser ©   (2005-07-07 13:50) [17]

Я говорю о том, что если есть возможность не использовать эти опции - то нет-нет да поддаешься.


 
Alex Konshin ©   (2005-07-07 14:13) [18]

Ломброзо ©   (07.07.05 13:49) [16]
Так и в перле так же. Не нравятся переменные из ниоткуда - use strict. Есть шанс наступить на грабли с массивами - пишем класс-обёртку, отслеживающую выход за границы массива.

Вот я и говорю - создать трудности, чтобы потом их героически преодолеть.
То, что это скриптовый язык - не значит, что он обязан быть нетипизированным. Лично у меня есть интерпретатор с языком со строгой типизацией и с со сравнимыми возможностями. Так этот код читают и исправлят люди, которые видят его впервые после небольшого вводного объяснения основных концепций.
Да и нетипизированность тоже не оправдание. Например, REXX - тоже нетипизированный, но замечательно читается и достаточно мощный. И конструкций в нем очень мало.

Просто очевидно, что автор Perl не имел проекта языка перед его созданием. Ну вот объясните мне, зачем нужно было в разных контекстах по-разному обзывать один и тот-же hash (это я про % и $)?
Почему нельзя было сделать нормальные описания параметров функций?
Почему для выборки аргумента функции используется набор значков, неужели нельзя было ввести какой-нибудь arg(i)? Или он настолько длинный, что рука отвалится печатать?

И еще - я говорю не по наслышке, мне довольно много приходится сталкиваться с Perl на работе.


 
Kerk ©   (2005-07-07 14:16) [19]

Alex Konshin ©   (07.07.05 14:13) [18]
неужели нельзя было ввести какой-нибудь arg(i)?


Это уже придирка. $_[i] (или даже сразу @_) тоже нормально смотрится.


 
Ломброзо ©   (2005-07-07 14:32) [20]

Alex Konshin ©   (07.07.05 14:13)
Просто очевидно, что автор Perl не имел проекта языка перед его созданием.

Тут согласен, многие вещи вводились в перл не иначе как под наркотическим вдохновением. Но справедливости ради нужно отметить, что сам Уолл сотоварищи в своих книжках призывают писать аккуратно и жертвовать компактностью в тех случаях, когда нужна ясность.


Ну вот объясните мне, зачем нужно было в разных контекстах по-разному обзывать один и тот-же hash (это я про % и $)?

Хе. Фиг его знает. В одном случае - это аналог стековой переменной, во втором случае - что-то типа ссылки. Это я уже подзабыл.


Почему нельзя было сделать нормальные описания параметров функций?
Почему для выборки аргумента функции используется набор значков, неужели нельзя было ввести какой-нибудь arg(i)? Или он настолько длинный, что рука отвалится печатать?

Ффф. Какой-такой-набор? или shift, или @_. Это пустяки. Нормальные описания - это что подразумевается? Есть прототипы, их как правило хватает. sub mysub($$@) и т.п.


И еще - я говорю не по наслышке, мне довольно много приходится сталкиваться с Perl на работе.

Аналогично. Полгода за ним просидел, кемелбук знал наизусть. Единственное, что бесит - это то, что к перлу быстро привыкаешь, а реюзабельный код написать сложно, вот и получается, что перловые скрипты затем плодятся на винте в изобилии, как тараканы.

В общем, ну их, эти холиворы. Хороший язык. Сижу вот текстовый документ в XML парсю. Удобно.


 
Alex Konshin ©   (2005-07-07 14:37) [21]

Не, несогласные мы.
Хреновый язык. Парсить и на нормальных языках можно.


 
Polevi ©   (2005-07-07 14:47) [22]

например xslt :)


 
palva ©   (2005-07-07 17:47) [23]

Если нужно преобразовать какой-то текст, нарезать на части, снабдить заголовками, хитрым образом переименовать файлы, то perl очень даже подходит. Скрипт один раз отработал, - и можно его выбросить. Во всяком случае perl-скрипт прекрасная замена bat-файлу. Опять таки можно из perl и excel запустить и ADO, то есть сохранить результат работы в офисе или в базе данных. Можно, конечно использовать VBA или VBS, и регулярные выражения в VBA можно использовать, но мне perl больше нравится.


 
TUser ©   (2005-07-07 17:56) [24]

Можно про рег. выражения в VBA по-подробнее?


 
DiamondShark ©   (2005-07-07 18:38) [25]


> Можно про рег. выражения в VBA по-подробнее?

Это я в экселе попробовал:

Sub Zzz()
   Dim re As Object
   Set re = CreateObject("VBScript.RegExp")
   re.Pattern = ".+"
   Debug.Print re.Test("qweqweqe")
End Sub


описание объекта тута:
http://msdn.microsoft.com/library/en-us/script56/html/vsobjRegExp.asp



Страницы: 1 вся ветка

Текущий архив: 2005.07.31;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.025 c
1-1121353411
Гость2
2005-07-14 19:03
2005.07.31
Количество файлов в папке


1-1121323224
Руслана
2005-07-14 10:40
2005.07.31
Объясните почему


3-1119343319
jiny
2005-06-21 12:41
2005.07.31
Как правильно сделать ID документа с префиксом (ЖАС-3420)?


14-1120620320
dr Tr0jan
2005-07-06 07:25
2005.07.31
Куда сходить в Москве?


3-1118921580
Сергей2
2005-06-16 15:33
2005.07.31
Использование процедуры из package