Perl Brasil

Pesquisar

Documentação

Artigos

Planeta

Eventos

Comunidade

r2 - 06 Aug 2006 - JoenioCosta

Como modificar uma linha específica de um arquivo

Problema

Você quer modificar uma linha específica de um arquivo-texto.

Solução

use Tie::File;

Discussão

O módulo Tie::File permite acessar as linhas de um arquivo como se fossem um array.

A primeira linha do arquivo é o elemento 0 do array; a segunda linha é o elemento 1, e assim por diante.

Mudanças no array são refletidas no arquivo imediatamente.

O arquivo não é carregado na memória, de forma que este módulo pode ser usado para arquivos gigantescos.

        use Tie::File;

        tie @array, 'Tie::File', filename or die ...;

        $array[13] = 'blah';     # line 13 of the file is now 'blah'
        print $array[42];        # display line 42 of the file

        $n_recs = @array;        # how many records are in the file?
        $#array -= 2;            # chop two records off the end


        for (@array) {
          s/PERL/Perl/g;         # Replace PERL with Perl everywhere in the file
        }

        # These are just like regular push, pop, unshift, shift, and splice
        # Except that they modify the file in the way you would expect

        push @array, new recs...;
        my $r1 = pop @array;
        unshift @array, new recs...;
        my $r2 = shift @array;
        @old_recs = splice @array, 3, 7, new recs...;

        untie @array;            # all finished

Comentários