[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: