Io :: insitu.

io :: insitu é um módulo Perl para evitar arquivos cloberados abertos para entrada e saída.
Baixe Agora

Io :: insitu. Classificação e resumo

Propaganda

  • Rating:
  • Licença:
  • Perl Artistic License
  • Preço:
  • FREE
  • Nome do editor:
  • Damian Conway
  • Site do editor:
  • http://search.cpan.org/~dconway/

Io :: insitu. Tag


Io :: insitu. Descrição

Io :: insitu é um módulo Perl para evitar arquivos cloberados abertos para entrada e saída. Io :: insitu é um módulo Perl para evitar arquivos clobering abertos para entrada e saída.synopsis Use io :: insitu; meu ($ in, $ out) = open_rw ($ infile_name, $ outfile_name); para a minha linha () {$ line = ~ s / foo / bar / g; Imprimir {$ Out} $ line; } Quando os usuários desejarem fazer o processamento in situ em um arquivo, eles geralmente especificam como o arquivo de entrada e saída:> myapp -i sample_data -o sample_data -op = normalizebut, se os sinalizadores -i e -o são processados de forma independente , o programa geralmente abre o arquivo para entrada, abri-lo novamente para saída (em que ponto o arquivo será truncado para o comprimento zero) e, em seguida, tentar ler na primeira linha do arquivo agora vazio: # Abra os dois filesHandles ... use QW fatal (aberto); Abra meu $ SRC, '', $ Destination_file; # Leitura, processo e dados de saída, linha por linha ... enquanto (minha $ linha = <$ src>) {print {$ DEST} transform ($ line); } Não só não executa a transformação solicitada no arquivo, também destrói os dados originais. Felizmente, esse problema é extremamente fácil de evitar: Apenas certifique-se de que você revele o arquivo de saída antes de abri-lo: # Abra os dois handandles ... use QW fatal (aberto); Abra meu $ SRC, '', $ Destination_file; # Leitura, processo e dados de saída, linha-por-linha ... while (my line line =) {imprimir {$ dest} transform ($ line); } Se os arquivos de entrada e saída forem diferentes, o arquivo de saída simplesmente remove um arquivo que estava prestes a ser reescrito de qualquer maneira. Em seguida, o segundo aberto simplesmente recria o arquivo de saída, pronto para escrever. Se os dois nomes de arquivos realmente se referem a um único arquivo in-situ, o nome de arquivo de saída remove esse nome de arquivo de seu diretório, mas não remove o próprio arquivo do sistema de arquivos. . O arquivo já está aberto através do FileHandle em $ Entrada, para que o sistema de arquivos preserá o arquivo desinteressado até que este Entry FileHandle esteja fechado. O segundo aberto então cria uma nova versão do arquivo in-situ, pronta para escrever. A única limitação desta técnica é que ele altera o inode de qualquer arquivo in-situ. Isso pode ser um problema se o arquivo tiver quaisquer aliases vinculados, ou se outros aplicativos estiverem identificando o arquivo pelo número Inode. Se uma dessas situações for possível, você poderá preservar o inode do arquivo in-situ usando a sub-rotina Open_RW () que é exportada deste módulo: # Abra os dois arquivos FileHandles ... Use io :: insitu; Meu ($ SRC, $ DEP) = Open_RW ($ Source_File, $ Destination_File); # Leitura, processo e dados de saída, linha-por-linha ... while (my line line =) {imprimir {$ dest} transform ($ line); } Requisitos: · Perl.


Io :: insitu. Software Relacionado

qmeterslib.

qmeterslib Library fornece um widget QT altamente personalizável para criar widgets de discagem análogos complexos. ...

159

Download

Arquivo :: Próximo :: OO

Arquivo :: Próximo :: OO é um módulo Perl com o wrapper do iTerator de localização por arquivo :: próximo :: Função de arquivos. ...

223

Download