Aaarrrgghh! RRRooowwwwoooaaRRRggh! AaaaarrRRrRrgggg!!!! AAAaaaaaaaaRRRRRR!!!<br><br>Ok então,<br><br>Bom, o que tenho é o seguinte:<br><br>a) Uma base de dados texto, campos separados por vígula<br>b) Uma base LDAP<br><br>
Preciso manter a base LDAP &quot;sincronizada&quot; com a base texto (a base texto é a origem de dados).<br><br>Não há nada que eu possa fazer para que essa base deixe de ser texto.<br><br>Portanto, peguei a base texto e trato com DBD::CSV.<br>
<br>A LDAP eu trato com Net::LDAP.<br><br>Só que as duas bases possuem campos distintos (em quantidade e nomes), afinal, não vou repetir no LDAP as mesmas porcarias que existem na base texto. Fora que não preciso de todos os campos CSV no LDAP.<br>
<br>Para simplificar meu trabalho eu pego a base texto e gero um array de objetos do tipo Livro.<br><br>E faço a mesma coisa, gero um array de objetos do tipo Livro, para a base LDAP.<br><br>Dessa forma eu passo a ter minimamente duas bases semelhantes (mesmos nomes de campo, quantidade, etc), ou seja, dois arrays contendo as duas bases.<br>
<br>E aí vem o trabalho que é usar isso. Preciso, por exemplo, &quot;varrer&quot; o array de livros vindo do CSV e conferir no LDAP se o livro está lá, se está faltando dado, se é para remover, se preciso mudá-lo de grupo, etc.<br>
<br>Ou seja, várias operações, nada rigorosamente específico neste momento.<br><br>Para ter uma idéia, o campo indexador só existe no CSV.<br><br>Meu trabalho agora, imediatamente, é adicionar esse campo indexador no LDAP. Já fiz um novo schema para minha base LDAP, etc.<br>
<br>Só falta ler o CSV, encontrar o respectivo Livro (pelo título) na LDAP e fazer as alterações.<br><br>Tudo muito simples.<br><br>Mas parece óbvio que vou ter que, num futuro nada distante, fazer várias operações entre essas bases. Para dar um exemplo, Livros possuem autores, que vêm de outro arquivo CSV e portanto precisam ser relacionados. Não vejo problema em criar um atributo objeto &#39;autores&#39; no meu Livro...<br>
<br>Bom, eu apenas gostaria de saber se existe algum módulo que pudesse ser &quot;plugado&quot; nesses arrays de objeto que me permitisse fazer buscas, etc. Caso contrário eu estaria caindo no abismo de refazer um sistema relacional.<br>
<br>Se eu soubesse que não há nada do gênero, me passa pela cabeça ter toda uma base LDAP temporária onde eu jogaria os dados da base texto e poderia manipulá-la usando o Net::LDAP mesmo... mas isso de criar base temporária parece meio nojentão, eu queria resolver tudo na memória mesmo, antes de escrever qualquer coisa.<br>
<br>Sim, eu também posso jogar tudo num Postgre e acabar com essa história.<br><br>Mas eu já estou lidando com bases não relacionais. Se eu pudesse evitar a presença do banco de dados relacional seria mais interessante, eu resolveria tudo entre objetos e as bases originais.<br>
<br>Ah, como operações de escrita só precisam ser feitas na base LDAP e o Net::LDAP me fornece toda um interface que simplifica isso, o que fazer com os objetos depois de usados não me preocupa tanto.<br><br>A propósito, não estou ganhando dinheiro freela nenhum com isso, ok? É metade estudo, metade obrigação do meu emprego mesmo.<br>
<br>Foi mal o tamanho do email.<br><br><a href="http://search.cpan.org/%7Ejhi/String-Approx-3.26/Approx.pm" target="_blank"></a>[]&#39;s<br>Gilberto<br>