ah<br><br>now we&#39;re talking :-)<br><br><div class="gmail_quote">2008/6/5 Luis Motta Campos &lt;<a href="mailto:luismottacampos@yahoo.co.uk">luismottacampos@yahoo.co.uk</a>&gt;:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="Ih2E3d">Alexei Znamensky wrote:<br>
&gt; Gabriel,<br>
&gt;<br>
&gt; #2 perfeitamente correta, sim, ficou faltando o ERR em caso de senha<br>
&gt; existente porém errada.<br>
<br>
</div>Ops. Falha minha. Volto a postar num minuto.<br>
<div class="Ih2E3d"><br>
&gt; para a pergunta #1, sem entrarmos na questão de quão efetivo é ter um<br>
&gt; mecanismo de authenticação se não há senha, o que você precisa fazer é<br>
&gt; usar a regexp:<br>
&gt;<br>
&gt; m{^(\S+)\s(.+)?$}<br>
&gt;<br>
&gt; com a interrogação, denotando que a senha é um parâmetro opcional. Nesse<br>
&gt; caso você poderá deixar o código com somente:<br>
&gt;<br>
&gt; my ( $user, $password ) = m{^(\S+)\s(.+)$};<br>
&gt; print is_valid( $user, $password )?&quot;OK\n&quot;:&quot;ERR\n&quot;;<br>
&gt;<br>
&gt; Não há necesisdade de fazer o primeiro teste:<br>
&gt;<br>
&gt; a) da forma como o Fields colocou antes era para testar senha vazia, que<br>
&gt; no seu caso é algo que você quer (why??? oh god, why??)<br>
<br>
</div>Eu pensei melhor e acho que não é responsabilidade deste programa testar<br>
ou compreender nada sobre a senha: ele simplesmente repassa o que quer<br>
que ele encontrar para a função de autenticação, que determina a<br>
validade das credenciais e retorna o valor final.<br>
<div class="Ih2E3d"><br>
&gt; b) da forma como você colocou ele vai testar se houve match ou não, o<br>
&gt; que irá retornar sempre true, ou seja, o print &quot;ERR\n&quot; nunca será executado.<br>
&gt;<br>
&gt; De qualquer maneira, pode ser removido.<br>
<br>
</div>A implementação mais nova é assim:<br>
<div class="Ih2E3d"><br>
#!/usr/bin/perl<br>
use strict;<br>
use warnings;<br>
use IO::Handle;<br>
<br>
STDOUT-&gt;autoflush(1);<br>
STDERR-&gt;autoflush(1);<br>
<br>
# implement your password validation here<br>
sub is_valid;<br>
<br>
while (&lt;&gt;) {<br>
</div><div class="Ih2E3d"> &nbsp; &nbsp; my ( $user, $password ) = m{^(\S+)(?:\s+(.+))?$};<br>
</div> &nbsp; &nbsp; print is_valid( $user, $password ) ? qq{OK\n} : qq{ERR\n};<br>
}<br>
__END__<br>
<br>
Espero que isso ajude.<br>
<div><div></div><div class="Wj3C7c"><br>
Putamplexos.<br>
--<br>
Luis Motta Campos (a.k.a. Monsieur Champs) is a software engineer,<br>
Perl fanatic evangelist, and amateur {cook, photographer}<br>
_______________________________________________<br>
SaoPaulo-pm mailing list<br>
<a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>Alexei Znamensky [russoz_gmail_com] [<a href="http://russoz.wordpress.com">russoz.wordpress.com</a>] [<a href="http://www.flickr.com/photos/alexeiz">www.flickr.com/photos/alexeiz</a>]<br>
&quot;Though we live in trying times, we&#39;re the ones who have to try&quot;