|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Artem Chuprina 2:5020/400 19 Mar 2001 15:31:02 To : smb@mh.vstu.edu.ru Subject : Re: <title> </title> -------------------------------------------------------------------------------- Здравствуй, Michael Smirnov. В твоём письме от Mon, 19 Mar 2001 09:57:21 +0000 (UTC) написано: MS>> foreach (<DATA>) { MS>> if ( $str = /.*\.html$/ ) { >> А это зачем?! smver> Это я глючу ;-) MS>> $title=m|<title>(.*)</title>|; #Regexp m|<title>>(.*)</title>| ? $title=$1 : undef $title; smver> Да, коротко и красиво. smver> Hо ведь мы не знаем, в какой строчке html-файла находится тег <title>, smver> поэтому приходится читать с начала файла и искать тег. local $/; undef $/; smver> А насчет того, где доступен $1, я не уверен. smver> Пока работает только так: smver> foreach (<DATA>) { smver> chomp; smver> if ( m|<title>(.*)</title>| && ($title=$1) ) { smver> print "тря-ля-ля...$title"; smver> last; smver> } <title>Заголовок, разрезанный на две строки</title> вышеприведенная конструкция, вкупе с модификатором s оператора m, как раз спасает. Зато прочесть придется весь файл. Можно было бы порекомендовать $/="</title>", что позволит вырезать содержимое <title>..</title>, но не позволит решить задачу, стоящую на самом деле, то есть вырезать заголовок HTML-документа - имена тегов case insensitive. А правильный подход в предположении, что файл может быть существенно больше 4 килобайт, заключается, разумеется, в чтении построчно и накоплении оного title'а, пока не встретится </title> с точностью до регистра, после чего отвалить и закрыть файл. -- Artem Chuprina E-mail: ran@ran.pp.ru Programmer FIDO: 2:5020/371.32 Memonet Ltd. Phone: +7-095-284-1356 --- ifmail v.2.15dev5 * Origin: NTV Internet (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/16483e4c3baad.html, оценка из 5, голосов 10
|