Ir para o conteúdo

Publicidade

 Estatísticas do Fórum

  • 0 Usuários ativos

    0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

Cursos Online iMasters
Foto:

manipulação de arquivos txt

  • Por favor, faça o login para responder
2 respostas neste tópico

#1 lfranca

lfranca
  • Membros
  • 49 posts

Postado 06 maio 2011 - 15:09

Boa tarde estou precisando de uma ajuda com manipulaçao de arquivos, andei pesquisando e estou meio perdido.

1- Preciso saber como criar um arquivo pelo q vi na internet seria algo como:

open (FILE, "<:utf8","c:/pc.txt")

onde open e o comando, file pelo q entendi e a variavel do arquivo, o segundo parametro acho q seia meio q um tipo e o terceiro o lugar onde salvar.

2- Depois preciso saber como escrever neste arquivo coisa q nao encontrei como fazer.

3- e depois preciso recuperar esses dados escritos em algum tipo de loop pelo q vi seria algo como

while (<FILE>) { #abre o loop

como ler as info!?

}
close FILE #fecha o arquivo

Editado por Mário Monteiro, 07 maio 2011 - 12:55 .
Retirada a palavra "AJUDA" do Titulo ou Descrição

  • 0

#2 Marcelo de Andrade

Marcelo de Andrade
  • Membros
  • 553 posts

Postado 08 maio 2011 - 08:04

Dá uma olhada aqui: http://www.vivaolinu...rquivos-no-Perl .
  • 0

#3 guidjos

guidjos
  • Moderadores
  • 628 posts

Postado 17 junho 2011 - 18:17

Sugiro que não use o formato adotado pelo artigo acima. Dado o arquivo "a.txt", com o seguinte conteúdo: ...

um
dois
tres
<img src='http://forum.imasters.com.br/public/style_emoticons/<#EMO_DIR#>/smile.gif' class='bbc_emoticon' alt=':)' />

..., o seguinte programa imprime linha a linha na tela:

# SEMPRE use warnings e strict. SEMPRE rejeite código que não os usa.

use warnings;
use strict;

open my $arquivo, "a.txt" or die "Erro - nao foi possivel abrir o arquivo.";

while (my $linha = <$arquivo>)
{
    chomp $linha;          # remove o newline
    print "\n - ", $linha;
}

A ---ta linha abre o arquivo a.txt para leitura. Se não for possível fazê-lo, o programa mostra um erro e aborta execução. A condição do while será verdadeira enquanto "<$arquivo>" não produzir undef. <> é um operador de leitura - ele lê um registro do filehandle por ele englobado (em nosso caso, $arquivo). Um registro é uma unidade lógica de dados. Basicamente, é qualquer quantidade de dados encontrada até que seja encontrado o conteúdo da variável especial $/ (marcador ou separador de registro). O valor padrão de $/ é o código usado para newlines. Em ambientes Unix, este valor é "\n". Em ambientes windows, é "\n\r". Se a variável $/ possuir valor undef quando a operação de leitura for executada, o conteúdo é lido até EOF.

Com isto em mente, é fácil entender por que o seguinte código lê diretamente todo o arquivo para a memória:

use warnings;
use strict;

open my $arquivo, "a.txt" or die "Erro - nao foi possivel abrir o arquivo.";

undef $/; # $/ agora tem valor indefinido

my $tudo = <$arquivo>;
print $tudo;

Como é de se esperar no Perl, caso você não especifique onde o conteúdo lido deve ser armazenado, a variável especial $_ o recebe. É possível escrever os programas acima de forma mais simples:

use warnings;
use strict;

open my $arquivo, "a.txt" or die "Erro - nao foi possivel abrir o arquivo.";

print <$arquivo>;

Note que eles fazem coisas diferentes, embora a saída seja a mesma. O anterior lê todo o arquivo de uma vez, e passa para print uma lista com dois elementos: [ (conteúdo do arquivo), undef ]. O segundo passa uma lista com 5 elementos: [ "um\n", "dois\n", "tres\n", ":)", undef ] em *nix, e [ "um\n\r", "dois\n\r", "tres\n\r", ":)", undef ] em Windows.


Sugiro que atenha-se a código legível sempre que necessitar que seu código seja lido por outras pessoas (ou por você mesmo). Se estiver escrevendo apenas um pequeno utilitário que será logo descartado, não vejo problemas em escrever um programa pequeno, feio e inseguro. Contudo, se o código tiver que durar mais que alguns minutos, tome as devidas providências.
  • 0




Publicidade

/ins>