Executando arquivos .pl no Apache e no Shell
Pessoal,
Tive vários problemas depois de copiar arquivos de um CD para meu filesystem, quando eu tentava executar o script em perl, retornava:
debian-etch:/var/www/cgi-bin/# ./fig07_04.pl
-su: ./fig07_04.pl: /usr/bin/perl^M: bad interpreter: file or directory not found
Quando eu tentava acessar os scripts pela WEB, na maioria das vez aparecia "Internal Server Error", o apache entao retornou:
malformed header from script. Bad header=1 2 3 4 5 6 7 8 9 10 : fig03_05.pl
Premature end of script headers: fig08_01.pl
Ou seja não consegui nem executar o script nem no prompt e nem no Apache.
Então encontrei a solução nos sites:
http://www.itc.virginia.edu/desktop/web/perl_scripts.html
http://twiki.org/cgi-bin/view/Support/PrematureEndOfScriptHeadersError
Entao fiz um script para agilizar isso, como sao poucos arquivos fiz somente com uma entrada, caso voce precise de fazer isso em diversos arquivos use parametros, ou arrays mesmo.
#/bin/bash
origem="perl";
destino="perl -wT";
filename="";
echo "Digite o nome do arquivo .pl que voce quer consertar:"
read filename
#Testa se existe o comando flip que limpa os caracteres invalidos
if [ -x /usr/bin/flip ]; then
flip -u $filename
else
echo "Instale o programa flip!/n";
echo "Abortando o programa/n";
exit 0;
fi
#Altera valor de perl para perl -Wt
sed -i "s/$origem/$destino/g" $filename
#Atribui a string a variavel linha
linhahtml='print "Content-type: text/html"';
#Adiciona a string definida abaixo da linha perl
sed -i "/perl -wT/ a\ $linhahtml" $filename
Att,
Faria
Novos endereços, o Yahoo! que você conhece. Crie um email novo com a sua cara @ymail.com ou @rocketmail.com.
http://br.new.mail.yahoo.com/addresses
Reply to: