
Localizar Uma Sequência De Texto Em 1 Arquivo
#1
Posted 12/01/2005, 13:40
arquivo: texto.txt
<seila aaaa>
user aaaa
grupo aaaa
</seila>
<seila bbb>
user bbb
grupo bbb
</seila>
<seila ccc>
user ccc
grupo ccc
</seila>
No caso, meu script abre esse arquivo, e tentaria procurar por
<seila bbb>
user bbb
grupo bbb
</seila>
mas mesmo se eu colocar somente
@busca =~ /user bbb/
isso é depois do open ... ele não retorna nada.
Alguem sabe como posso fazer pra ele buscar a sequencia inteira?
Hospedagem de Sites // Revenda de Hospedagem // Streaming & Web Rádio // Domínios // Vps
Hospedagem Ilimitada -> R$ 15,00 ao Mês + 30 Dias Grátis
Outros Sites: Jogos Loucos em Flash | Divulgue seu site Gratis | Web Masters Dicas & Tutoriais
#2
Posted 12/01/2005, 15:47
$valores = ($vem_do_foreach=~ m#<seila bbb>\s*(.*?)\s*</seila bbb>#is);
O "$vem_do_foreach" vc vai ter que dar um foreach no arquivo e usar essa variavel.
tente ai.
flw
Site >> joaogabriel.org
CGiClube.net >> http://www.cgiclube.net
Vitória Perl Mongers >> http://vitoria.pm.org
#3
Posted 13/01/2005, 11:26
os dados estãram separados com 5 linhas
faça um for que pegue cada 5 linha (isso dentro de um foreach, depois é so comparar com o if
tenta ai
flw
#4
Posted 17/01/2005, 00:28
Site >> joaogabriel.org
CGiClube.net >> http://www.cgiclube.net
Vitória Perl Mongers >> http://vitoria.pm.org
#5
Posted 19/01/2005, 13:31
open(FD, "arquivo.txt") or die("$!\n");
@usuarios = grep(/^<seila/i, FD);
close(FD);
ai ele já vai separar do jeito que eu preciso os usuários que tem cadastrado nesse arquivo, acho q agora o resto deve ser fácil de fazer
Hospedagem de Sites // Revenda de Hospedagem // Streaming & Web Rádio // Domínios // Vps
Hospedagem Ilimitada -> R$ 15,00 ao Mês + 30 Dias Grátis
Outros Sites: Jogos Loucos em Flash | Divulgue seu site Gratis | Web Masters Dicas & Tutoriais
#6
Whitesnake
Posted 20/01/2005, 20:55
open(TXT,"texto.txt");
@linhas = grep(/\n/gi, <TXT>);
close(TXT);
print "@linhas";
#7
Posted 23/01/2005, 17:46
tenta algo assim:
$input = "<seila aaaa>\n";
$output = "</seila>\n";
open(FILE, "+<$patch");
@db = <FILE>;
$cont = 0;
foreach $base(@db){
if($base eq $input) {
while(1){
$base = $db[$cont];
print "Apagando $db[$cont]\n";
$db[$cont] = "";
last if($base eq $output);
$cont++;
}
seek(FILE,0,0);
print FILE @db;
truncate(FILE, tell(FILE));
last;
}
$cont++;
}
close(FILE);
o output faz o script parar de deletar
esse eh um dos meios... eh meio confuso mas tem outros mais simples mas esse ja tava na mao ehehe...
ainda nao testei nao mas teste ai num arquivo separado
Edição feita por: prix, 23/01/2005, 17:47.
print join'',(reverse map{/d([a-z])d/}split/W/,'$5x6@314&60f%3i4#moo^1r2#moo^1p2')," ", pack ("B*",'01110000011001010111001001101100')," ", pack ("B*",'011011010110111101101110011010110110010101111001'), "n";
sleep 5;
E-Mails, topicos ou mensagens privadas não serão respondidas a menos que eu considere uma relevancia/necessidade na mesma.
#8
Posted 23/01/2005, 23:03
"+<" >> na parte que abre o arquivo.
flw
Site >> joaogabriel.org
CGiClube.net >> http://www.cgiclube.net
Vitória Perl Mongers >> http://vitoria.pm.org
#9
Posted 24/01/2005, 00:36
vc pode ter mais informações do comando usando
perldoc perlopentut
na pasta bin do perl
ou
perldoc -f open
print join'',(reverse map{/d([a-z])d/}split/W/,'$5x6@314&60f%3i4#moo^1r2#moo^1p2')," ", pack ("B*",'01110000011001010111001001101100')," ", pack ("B*",'011011010110111101101110011010110110010101111001'), "n";
sleep 5;
E-Mails, topicos ou mensagens privadas não serão respondidas a menos que eu considere uma relevancia/necessidade na mesma.
#10
Posted 24/01/2005, 21:53
flw
Edição feita por: jgcl, 24/01/2005, 21:54.
Site >> joaogabriel.org
CGiClube.net >> http://www.cgiclube.net
Vitória Perl Mongers >> http://vitoria.pm.org
#11
Posted 25/01/2005, 16:25
flw
#12
Whitesnake
Posted 25/01/2005, 23:42
Seek
Altera o modo de gravação quando FILEHANDLE é aberto com +<
Sintaxe: seek ([FILEHANDLE,][NAOSEI :b ,][MODO])
Tell
Retorna o tamanho em bytes do arquivo especificado em FILEHANDLE.
Sintaxe: tell ([FILEHANDLE])
Truncate
Pica o arquivo de modo a que ele tenha que ficar com o tamanho em bytes especificado em BYTES.
Sintaxe: truncate ([FILEHANDLE,][BYTES])
#13
Posted 26/01/2005, 19:00
porem ele tambem serve para acorda algo adormecido ou q tenha passado da posição desejada no meu caso o foreach passa a posicao entao uso o seek para restaurar a posicao.
quanto ao truncate e tell usado.
digamos assim para informar ao perl o novo valor do arquivo para q ele nao seja corrompido.
sendo q o truncate pega a expressao nome e o tell os bytes
grep
eh normalmente usado para expressoes regulares tipo para localizar algo etc. ou montar algum expressao de bloqueio.
print join'',(reverse map{/d([a-z])d/}split/W/,'$5x6@314&60f%3i4#moo^1r2#moo^1p2')," ", pack ("B*",'01110000011001010111001001101100')," ", pack ("B*",'011011010110111101101110011010110110010101111001'), "n";
sleep 5;
E-Mails, topicos ou mensagens privadas não serão respondidas a menos que eu considere uma relevancia/necessidade na mesma.
#14
Posted 05/02/2005, 10:33
o resto tira certinho
e vc tem ai outro exemplo de como fazer isso?
abraços
#15
Posted 05/02/2005, 12:27
ou seja o output eh onde ele para o input onde ele comeca.
print join'',(reverse map{/d([a-z])d/}split/W/,'$5x6@314&60f%3i4#moo^1r2#moo^1p2')," ", pack ("B*",'01110000011001010111001001101100')," ", pack ("B*",'011011010110111101101110011010110110010101111001'), "n";
sleep 5;
E-Mails, topicos ou mensagens privadas não serão respondidas a menos que eu considere uma relevancia/necessidade na mesma.
1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)