Pessoal,
Tenho a seguinte duvida.
Quando tenho um codigo em perl, exemplo meu_script.pl e quero compilar este codigo.
executo no linux o comando:
perlcc -o meu_script.cgi meu_script.pl
Então, meu script ficara compilado com o nome meu_script.cgi.
O problema é que uso chamadas de outros scripts e uso as variaveis deles, por exemplo:
require "script_auxiliar.pl";
Nao posso compilá-los, por se o fizer, não posso chamar para uso de variaveis.
Alguem tem alguma sugestão ou a solução para o problema ?
O que eu quero é compilar também o script_auxiliar.pl.
Require "script_auxiliar.pl";
Started By Wilton Paulo, 16/12/2005, 06:37
8 replies to this topic
#1
Posted 16/12/2005, 06:37
Wilton Paulo,
ICQ: 102226854
MSN: wiltonpaulo@hotmail.com
ICQ: 102226854
MSN: wiltonpaulo@hotmail.com
#2
Posted 16/12/2005, 10:14
coloca tudo junto num código só
Hospedar-se .Com - Monitor Webfórum - Equipe de Gerenciamento de Servidores
Hospedagem de Sites // Revenda de Hospedagem // Streaming & Web Rádio // Domínios // Vps
Hospedagem Ilimitada -> R$ 15,00 ao Mês + 30 Dias Grátis
Outros Sites: Jogos Loucos em Flash | Divulgue seu site Gratis | Web Masters Dicas & Tutoriais
Hospedagem de Sites // Revenda de Hospedagem // Streaming & Web Rádio // Domínios // Vps
Hospedagem Ilimitada -> R$ 15,00 ao Mês + 30 Dias Grátis
Outros Sites: Jogos Loucos em Flash | Divulgue seu site Gratis | Web Masters Dicas & Tutoriais
#3
Posted 16/12/2005, 14:40
exato... até porque a compilação junta tudo em um arquivo só...
João Gabriel
Site >> joaogabriel.org
CGiClube.net >> http://www.cgiclube.net
Vitória Perl Mongers >> http://vitoria.pm.org
Site >> joaogabriel.org
CGiClube.net >> http://www.cgiclube.net
Vitória Perl Mongers >> http://vitoria.pm.org
#4
Posted 16/12/2005, 18:30
Acho que vocês num estão entendendo.
Imagina se tenho 10 arquivos com códigos cgi.
Cada arquivo desse chama um menu, como se fosse uma biblioteca, e dessa forma coloco as variaveis desse menu no script_auxiliar.
Por exemplo, um menu contendo os links do site.
Quando precisar chamar o menu, apenas chamo a subrotina que fica no script_auxiliar.
Conteudo do script_auxiliar:
sub Menu {
print qq^Aqui coloco os links do menu^;
}
1;
Conteudo dos outros arquivos cgis do site:
- arquivo.cgi
require "script_auxiliar.pl"
&Menu; # Esta linha de comando chama o menu.
print "Mostra o resto da pagina";
- arquivo2.cgi
require "script_auxiliar.pl"
&Menu; # Esta linha de comando chama o menu.
print "Mostra o resto da pagina";
E pior ainda, não tenho apenas o menu, tenho dezenas de variaveis que preciso utilizar.
Então não posso compilar todos os meus arquivos com o código desse auxiliar, se fizer isso, meu código vai ficar muito grande e eu to tentando deixar no tamanho minimo possivel.
Imagina se tenho 10 arquivos com códigos cgi.
Cada arquivo desse chama um menu, como se fosse uma biblioteca, e dessa forma coloco as variaveis desse menu no script_auxiliar.
Por exemplo, um menu contendo os links do site.
Quando precisar chamar o menu, apenas chamo a subrotina que fica no script_auxiliar.
Conteudo do script_auxiliar:
sub Menu {
print qq^Aqui coloco os links do menu^;
}
1;
Conteudo dos outros arquivos cgis do site:
- arquivo.cgi
require "script_auxiliar.pl"
&Menu; # Esta linha de comando chama o menu.
print "Mostra o resto da pagina";
- arquivo2.cgi
require "script_auxiliar.pl"
&Menu; # Esta linha de comando chama o menu.
print "Mostra o resto da pagina";
E pior ainda, não tenho apenas o menu, tenho dezenas de variaveis que preciso utilizar.
Então não posso compilar todos os meus arquivos com o código desse auxiliar, se fizer isso, meu código vai ficar muito grande e eu to tentando deixar no tamanho minimo possivel.
Wilton Paulo,
ICQ: 102226854
MSN: wiltonpaulo@hotmail.com
ICQ: 102226854
MSN: wiltonpaulo@hotmail.com
#5
Posted 16/12/2005, 21:59
Então você está programando na linguagem errada ou está tentando usar o compilador errado ...
o perlcc creio que não faça isso, tbm utilizo ele para compilar scripts perl pra shell, quando preciso carregar um arquivo pelo require, eu tenho que copiar todo o código desse arquivo e colocar no script principal pra conseguir que ele funcione bem ...
Vc pode tentar o compilador "PAR" não é muito seguro ...
o perlcc creio que não faça isso, tbm utilizo ele para compilar scripts perl pra shell, quando preciso carregar um arquivo pelo require, eu tenho que copiar todo o código desse arquivo e colocar no script principal pra conseguir que ele funcione bem ...
Vc pode tentar o compilador "PAR" não é muito seguro ...
Hospedar-se .Com - Monitor Webfórum - Equipe de Gerenciamento de Servidores
Hospedagem de Sites // Revenda de Hospedagem // Streaming & Web Rádio // Domínios // Vps
Hospedagem Ilimitada -> R$ 15,00 ao Mês + 30 Dias Grátis
Outros Sites: Jogos Loucos em Flash | Divulgue seu site Gratis | Web Masters Dicas & Tutoriais
Hospedagem de Sites // Revenda de Hospedagem // Streaming & Web Rádio // Domínios // Vps
Hospedagem Ilimitada -> R$ 15,00 ao Mês + 30 Dias Grátis
Outros Sites: Jogos Loucos em Flash | Divulgue seu site Gratis | Web Masters Dicas & Tutoriais
#6
Posted 16/12/2005, 22:06
hahah...Descobri como fazer.
Vou explicar exatamente como fiz o teste:
Criei um arquivo chamado libteste.pl, e abaixo segue o conteudo:
#!/usr/bin/perl
sub Rotina_Teste()
{
print "Aqui ficara o menu do meu site\n";
}
1;
Este arquivo funciona como se fosse uma biblioteca e cada instrução pode ser usada nos outros CGIs.
Depois criei o index.pl onde ficara o meu site, a pagina principal, segue o conteudo:
#!/usr/bin/perl
print "Content-type: text/html\n\n";
require "libteste.plc"; # Efetuo a chamada da libteste com o nome já compilado.
&Rotina_Teste; # Chamo a subrotina que esta dentro da "biblioteca", esta vai me trazer o menu.
Tenho o meu index.pl criado e quero agora compilar este arquivo.
No console do linux digito:
#perlcc -o index.cgi index.pl
A minha duvida era para compilar a biblioteca, que não funcionava quando fazia o mesmo comando acima.
Ai conversei com um colega que conhece bem de perl e ele me falou que o comando tem que ser como abaixo, no caso de ser uma biblioteca ou chamada de script.
#perlcc -B -o libteste.plc libteste.pl
Ele disse que o arquivo tem que ser compilado com o formato de compilação bytecode.
Mas agradeço a ajuda.
Vou explicar exatamente como fiz o teste:
Criei um arquivo chamado libteste.pl, e abaixo segue o conteudo:
#!/usr/bin/perl
sub Rotina_Teste()
{
print "Aqui ficara o menu do meu site\n";
}
1;
Este arquivo funciona como se fosse uma biblioteca e cada instrução pode ser usada nos outros CGIs.
Depois criei o index.pl onde ficara o meu site, a pagina principal, segue o conteudo:
#!/usr/bin/perl
print "Content-type: text/html\n\n";
require "libteste.plc"; # Efetuo a chamada da libteste com o nome já compilado.
&Rotina_Teste; # Chamo a subrotina que esta dentro da "biblioteca", esta vai me trazer o menu.
Tenho o meu index.pl criado e quero agora compilar este arquivo.
No console do linux digito:
#perlcc -o index.cgi index.pl
A minha duvida era para compilar a biblioteca, que não funcionava quando fazia o mesmo comando acima.
Ai conversei com um colega que conhece bem de perl e ele me falou que o comando tem que ser como abaixo, no caso de ser uma biblioteca ou chamada de script.
#perlcc -B -o libteste.plc libteste.pl
Ele disse que o arquivo tem que ser compilado com o formato de compilação bytecode.
Mas agradeço a ajuda.
Wilton Paulo,
ICQ: 102226854
MSN: wiltonpaulo@hotmail.com
ICQ: 102226854
MSN: wiltonpaulo@hotmail.com
#7
Posted 17/12/2005, 19:48
só que o bytecode tem como descompilar, por isso não gosto muito de usar ele ... esse é o problema de usar ele
Não cheguei a testar, mas está conseguindo executar na pasta cgi-bin seu script compilado pelo perlcc ?
Tentei mas não sei o que acontece, até o simples "Hello World" sempre da Erro 500, mesmo o código estando certo:
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "Hello World";
Depois que compilo e coloco na cgi-bin com os chmod 755 não roda de jeito nenhum ...
Não cheguei a testar, mas está conseguindo executar na pasta cgi-bin seu script compilado pelo perlcc ?
Tentei mas não sei o que acontece, até o simples "Hello World" sempre da Erro 500, mesmo o código estando certo:
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "Hello World";
Depois que compilo e coloco na cgi-bin com os chmod 755 não roda de jeito nenhum ...
Hospedar-se .Com - Monitor Webfórum - Equipe de Gerenciamento de Servidores
Hospedagem de Sites // Revenda de Hospedagem // Streaming & Web Rádio // Domínios // Vps
Hospedagem Ilimitada -> R$ 15,00 ao Mês + 30 Dias Grátis
Outros Sites: Jogos Loucos em Flash | Divulgue seu site Gratis | Web Masters Dicas & Tutoriais
Hospedagem de Sites // Revenda de Hospedagem // Streaming & Web Rádio // Domínios // Vps
Hospedagem Ilimitada -> R$ 15,00 ao Mês + 30 Dias Grátis
Outros Sites: Jogos Loucos em Flash | Divulgue seu site Gratis | Web Masters Dicas & Tutoriais
#8
Posted 19/12/2005, 22:15
Que estranho, aqui ta rodando normal. Eu configurei o apache pra rodar CGI no diretorio /var/www/html/dirdomeusite/cgi-bin/
Cheguei a testar no Fedora 4 e no Slackware 10.1.
Qual o Sistema Operacional você está usando ?
Cheguei a testar no Fedora 4 e no Slackware 10.1.
Qual o Sistema Operacional você está usando ?
Wilton Paulo,
ICQ: 102226854
MSN: wiltonpaulo@hotmail.com
ICQ: 102226854
MSN: wiltonpaulo@hotmail.com
#9
Posted 19/12/2005, 22:35
Fedora core 4,
Parece que era só atualizar o perl (de 5.8.6 pra 5.8.7), corrigiram já pelo jeito, consegui rodar
Parece que era só atualizar o perl (de 5.8.6 pra 5.8.7), corrigiram já pelo jeito, consegui rodar
Hospedar-se .Com - Monitor Webfórum - Equipe de Gerenciamento de Servidores
Hospedagem de Sites // Revenda de Hospedagem // Streaming & Web Rádio // Domínios // Vps
Hospedagem Ilimitada -> R$ 15,00 ao Mês + 30 Dias Grátis
Outros Sites: Jogos Loucos em Flash | Divulgue seu site Gratis | Web Masters Dicas & Tutoriais
Hospedagem de Sites // Revenda de Hospedagem // Streaming & Web Rádio // Domínios // Vps
Hospedagem Ilimitada -> R$ 15,00 ao Mês + 30 Dias Grátis
Outros Sites: Jogos Loucos em Flash | Divulgue seu site Gratis | Web Masters Dicas & Tutoriais
1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)