Ficando específico 'Sem memória!' mensagem ao rodar script Perl muito envolvido [fechado]

2

Estou executando um script Perl que analisa informações de cerca de 7.000 arquivos HTML. Provavelmente não é realmente relevante, mas eu estou apenas tentando descrever que isso é, bem, fazendo um monte de coisas. Eu originalmente os tinha apenas imprimir as informações que eu estava procurando no terminal e depois colei isso na minha planilha. No entanto, na metade do caminho, me disseram que eu estava sem memória e parou.

Out of memory! - nada mais

Eu pesquisei no Google, mas não consegui encontrar nada que falasse sobre o terminal imprimir especificamente isso. Eu poderia encontrar posts relacionados ao Linux sobre a falta de memória, mas eu queria ter certeza. Eu tentei, sem sucesso, gravar em um arquivo .txt em vez de imprimir no terminal.

Como posso consertar isso e deixar o script Perl rodar completamente?

    
por Mark Lyons 26.12.2012 / 07:49

1 resposta

1

Em vez de lutar com otimização de perl, use um wrapper como este:

wrapper.sh

#!/bin/bash

for i in 'ls '
do
    echo $i
    <perl script> $i
done

Use da seguinte forma:

./wrapper.sh *.html

Então, em vez do script perl fazer o loop através de 7k de arquivos em uma execução, é um novo começo para cada arquivo.

Eu também sugiro que você redirecione a saída para um arquivo em vez da tela. É possível que o terminal (xterm, gnome-term, etc) tenha usado toda a sua memória se configurado para buffer / linhas ilimitadas.

    
por John Siu 28.12.2012 / 17:47