De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.

URLConverter

Colaboração: Rubens Queiroz de Almeida

Data de Publicação: 27 de Março de 2001

A home page da Dicas-L é feita de forma automática. Os textos são escritos em um formato com algumas marcações, que geram a mensagem que é enviada aos assinantes, a página HTML que fica no site, atualização do índice, página principal, etc.

Dentre as funções que eu uso para a publicação na Web estão a conversão de URLs. No texto original, onde eu tenho

  http://www.unicamp.br

eu preciso que, na página HTML, fique assim:

  <a href="http://www.unicamp.br>http://www.unicamp.br</a>

Para isto eu uso o script que se segue, que me foi fornecido pelo Marcelo Malheiros.

Depois eu conto com mais detalhes como a Dicas-L foi automatizada. É meio rudimentar mas funciona bem :-)


urlconverter

  #!/usr/local/bin/perl
  # urlify -- tchrist@perl.com
  require 5.002;  # well, or 5.000 if you see below
  
  $urls = '(' . join ('|', qw{
                http
                telnet
                gopher
                file
                wais
                ftp
            } )
        . ')';
  
  $ltrs = '\w';
  $gunk = '/#~:.?+=&%@!\-';=
  $punc = '.:?\-';
  $any  = "${ltrs}${gunk}${punc}";
  
  while (<>) {
      ## use this if early-ish perl5 (pre 5.002)
      ##  s{\b(${urls}:[$any]+?)(?=[$punc]*[^$any]|\Z)}{<A HREF="$1">$1</A>}goi;
      ## otherwise use this -- it just has 5.002ish comments
      s{
          \b                          # start at word boundary
          (                           # begin $1  {
            $urls     :               # need resource and a colon
            [$any] +?                 # followed by on or more
                                      #  of any valid character, but
                                      #  be conservative and take only
                                      #  what you need to....
          )                           # end   $1  }
          (?=                         # look-ahead non-consumptive assertion
                  [$punc]*            # either 0 or more puntuation
                  [^$any]             #   followed by a non-url char
              |                       # or else
                  $                   #   then end of the string
          )
  	}{<A HREF="$1">$1</A>}igox;
      print;
  }

Adicionar comentário

* Campos obrigatórios
5000
Powered by Commentics

Comentários

Nenhum comentário ainda. Seja o primeiro!


Veja a relação completa dos artigos de Rubens Queiroz de Almeida