[SP-pm] Autenticador Squid em Perl

Luis Motta Campos luismottacampos em yahoo.co.uk
Quinta Junho 5 12:14:11 PDT 2008


Gabriel Vieira wrote:
> 1) Se o usuário colocar apenas "login " haverá falha na REGEX, então
> por que não usá-la como validador direto? A senha pode ser em branco?
> 2) Caso a senha e o login não batam, precisaria retornar caso tivesse
> erro, certo?
> 
> 
> print "ERR\n" unless my ( $user, $password ) = m{^(\S+)\s(.+)$};
> print is_valid( $user, $password )?"OK\n":"ERR\n";

Apenas uma pequena objeção, pequeno gafanhoto:

champs em rugzak:~/tmp$ perl -V | egrep my
Summary of my perl5 (revision 5 version 10 subversion 0) configuration:
champs em rugzak:~/tmp$ cat test.pl
#!/usr/bin/perl
use strict;
use warnings;

my $com = 'champs 54321';
my $sem = 'champs';

foreach my $data ( 'champs 54321', 'champs' ) {
     print qq{Eu vi a senha "$password" do user $user.\n}
       unless my ( $user, $password ) = $data =~ m{^(\S+)\s(.+)$};
     print qq{User: $user\tPasswd: $password\n};
}
__END__
champs em rugzak:~/tmp$ perl -wc test.pl
Global symbol "$password" requires explicit package name at test.pl line 9.
Global symbol "$user" requires explicit package name at test.pl line 9.
test.pl had compilation errors.
champs em rugzak:~/tmp$

O problema é de sintaxe: se você definir as variáveis dentro do 
unless(), elas ficam restritas àquele contexto, e não podem ser usadas 
mesmo que a expressão regular consiga um match, por que as variáveis (e 
a informação capturada) vai ser destruída quando o contexto do unless() 
sumir.

Não inventa, faz como eu estou implementando. ;)
Putamplexos!
-- 
Luis Motta Campos (a.k.a. Monsieur Champs) is a software engineer,
Perl fanatic evangelist, and amateur {cook, photographer}


Mais detalhes sobre a lista de discussão SaoPaulo-pm