Boa tarde estou a precisar de uma ajudinha a fazer um split,
tenho esta url: "do.asp?name=mouse&year=1990"
preciso de tirar o "mouse" e o "1990", com certeza existe uma maneira muito simples de fazer isto em perl xd,
Cumprimentos
split de uma url
Iniciado por
sent
, 12 Dez 2011 11:56
8 respostas a este tópico
#1
Publicado 12 de Dezembro de 2011 - 11:56
#2
Publicado 12 de Dezembro de 2011 - 12:12
#3
Publicado 12 de Dezembro de 2011 - 12:29
não dá para fazer split com "or", tipo para dividir logo a url nos "?", "=" , "&" assim só tinha que fazer split uma vez
#4
Publicado 12 de Dezembro de 2011 - 12:33
Oi,
Sim, só tens de fazer a "Regular expression" adequada...
Sim, só tens de fazer a "Regular expression" adequada...
#5
Publicado 12 de Dezembro de 2011 - 12:40
Apos uma pesquisa sobre essas "regular expressions", descobri que é tão simples quanto:
@array = split "=|&|\\\?",$url2;
baste por operador ou -> "|"
obrigado
@array = split "=|&|\\\?",$url2;
baste por operador ou -> "|"
obrigado
#6
Publicado 12 de Dezembro de 2011 - 13:01
Também podes utilizar:
Código (Perl):
Código (Perl):
my $url = ...
my @fields = split /[=&?]/, $url;
my @fields = split /[=&?]/, $url;
#7
Publicado 12 de Janeiro de 2012 - 15:39
O Perl tem várias coisas a um nível que outras linguagens não têm. Uma é a comunidade; outra é que de certeza que aquilo que tu queres fazer, já alguém fez e partilhou com a comunidade no CPAN; outra ainda é que a filosofia da linguagem assenta no princípio de que há mais que uma forma de fazer a mesma coisa (e os programadores acrescentam que: a tua está errada
.
Há muitas formas de fazer isso... A formas complicadas são as que te foram sugeridas pelos outros utilizadores (sem demérito pela sua excelente intenção de ajudar).
Mas claro sendo isto Perl, tens diversas formas de fazer isto....
Por exemplo se tiveres a utilizar frameworks como o Catalyst, Mojolicious, ou Dancer, não precisas de te preocupar isso, porque elas tratam disso por ti.
Mas convém lembrar que o Perl já foi conhecido como o "Internet duck tape". E durante alguns anos, parecia que a WWW que tinha conteúdos dinâmicos era toda gerada por scritps em Perl que utilizavam o CGI.pm.
O CGI.pm continua a existir... E melhor que isso, faz parte da biblioteca standard do Perl. Ou seja, desde que tenhas Perl, tens o CGI.pm. Assim sendo a solução mais recomendável para o teu problema é algo como isto:
Código (Perl):
Se souberes exactamente quais os nomes dos parametros que queres também podes obter os seus valores facilmente:
Código (Perl):
Há muitas formas de fazer isso... A formas complicadas são as que te foram sugeridas pelos outros utilizadores (sem demérito pela sua excelente intenção de ajudar).
Mas claro sendo isto Perl, tens diversas formas de fazer isto....
Por exemplo se tiveres a utilizar frameworks como o Catalyst, Mojolicious, ou Dancer, não precisas de te preocupar isso, porque elas tratam disso por ti.
Mas convém lembrar que o Perl já foi conhecido como o "Internet duck tape". E durante alguns anos, parecia que a WWW que tinha conteúdos dinâmicos era toda gerada por scritps em Perl que utilizavam o CGI.pm.
O CGI.pm continua a existir... E melhor que isso, faz parte da biblioteca standard do Perl. Ou seja, desde que tenhas Perl, tens o CGI.pm. Assim sendo a solução mais recomendável para o teu problema é algo como isto:
Código (Perl):
use strict;
use warnings;
use CGI;
my $url = CGI->new("http://www.portugal-a-programar.org/forum/index.php?action=post;topic=61567.0;last_msg=44648");
my @values = map {$uri->param($_)} $uri->param;
use warnings;
use CGI;
my $url = CGI->new("http://www.portugal-a-programar.org/forum/index.php?action=post;topic=61567.0;last_msg=44648");
my @values = map {$uri->param($_)} $uri->param;
Se souberes exactamente quais os nomes dos parametros que queres também podes obter os seus valores facilmente:
Código (Perl):
$url->param("nome_do_parametro");
#8
Publicado 11 de Setembro de 2012 - 17:05
Hi.
Só a nível de conhecimento, deixando outra alternativa do módulo CGI... O URI::QueryParam[1]:
Código :
[1] https://metacpan.org/module/URI::QueryParam
[]'s
Só a nível de conhecimento, deixando outra alternativa do módulo CGI... O URI::QueryParam[1]:
Código :
$ perl -MURI::URL -MURI::QueryParam -E'my $url = url("http://host.com/?name=fvox");say $url->query_param("name");'
fvox
fvox
[1] https://metacpan.org/module/URI::QueryParam
[]'s
#9
Publicado 11 de Setembro de 2012 - 17:19
Deve haver muitas mais opções... A vantagem de utilizar o CGI é que já vem com o Perl.
O URI::Query é um bom módulo e até tem poucas dependências (apenas o MIME::Base64, que vem com o Perl).
O URI::Query é um bom módulo e até tem poucas dependências (apenas o MIME::Base64, que vem com o Perl).











