[SP-pm] Transformar 'path directory' em hash
Luis Motta Campos
luismottacampos em yahoo.co.uk
Quinta Junho 14 00:00:08 PDT 2007
On Jun 13, 2007, at 7:05 PM, Solli Honorio wrote:
> Pessoal,
>
> Tem alguma sugestão, quem sabe um Golf, para transformar um path, /
> var/log/syslog por exemplo, em um hash {var}{log}{syslog}, sem ser
> via uma função recursiva ?
>
Solli,
Segundo o D. Knuth, toda função recursiva pode ser transformada
numa função iterativa com o uso de uma pilha. (e eu acho que alguém
antes dele disse a mesma coisa, talvez tenha sido o E. Dijkstra...
De qualquer forma, você pode usar um eval:
sub path2hashref {
my $path = shift;
my $hash;
$hash = eval '$hash->' . (join '', map "{$_}", split qr{/},
$path ) . ' = q{.};';
die if $@; # propaga o erro, quem chamou isto que se vire ;-)
return $hash;
}
Mas eu não ia gostar nada de manter um programa de computador com
uma coisa destas nele... use o módulo do Igor, que é mais simples de
manter... ;-)
Substitua "eval" por "print" e você vai ver que eu estou criando o
código para o hash "on-the-fly".
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