The UNIX and Linux Forums  

Go Back   O UNIX e Linux Forum > Top Fóruns > Programação Shell Script e
.
google unix.com



Programação Shell Script e Post perguntas sobre ksh, CSH, SH, BASH, Perl, PHP, SED, Awk e outros scripts shell e shell scripts línguas aqui.

Mais UNIX e Linux Fórum Tópicos Você pode achar Helpfull
Fio Thread Starter Fórum Respostas Última postagem
Chamando uma função C-froma Perl jisha Programação Shell Script e 9 05-08-2008 01:59
Chamando Winzip de Perl MobileUser Programação Shell Script e 5 04-04-2007 04:51
chamando um script de perl gurukottur Programação Shell Script e 3 10-05-2006 12:48
Uma caixa do script perl chamando casa B do shell script new2ss Programação Shell Script e 1 09-13-2006 07:17
Chamando CGI em Perl Shell script [urgente] DeepakXavier Programação Shell Script e 0 10-09-2005 02:51

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
Linkback Thread Tools Pesquisar este Thread Rate Thread Display Modes
  #1 (permalink)  
Old 02-06-2007
new2ss new2ss is offline
Usuário
  
 

Join Date: Jan 2006
Lugares: 133
Chamando um script perl de um script perl


Código:
printf(Going to call another script... \n);
system(/my_dir/B.pl); # call another perl script B.pl
exit;

Oi a todos, acima, é um exemplo que estou usando para ligar para outro perl script a partir do actual perl script.

Tenho duas preocupações:
1) Este existe uma maneira melhor de alcançar o mesmo objectivo (ou seja, uma outra chamada perl a partir de um script perl script)?

2) Aviso existe uma saída comando na minha vocação script. Será que a saída comando ser executado apenas depois de concluída B.pl é ou será executado imediatamente B.pl se chama?
  #2 (permalink)  
Old 02-06-2007
cbkihong cbkihong is offline Forum Advisor  
Orientador
  
 

Join Date: Sep 2002
Localização: Hong Kong, China
Posts: 1.624
Citação:
Originally Posted by new2ss
1) Este existe uma maneira melhor de alcançar o mesmo objectivo (ou seja, uma outra chamada perl a partir de um script perl script)?
Sim. Utilizar require ().

Citação:
Originally Posted by new2ss
2) Aviso existe uma saída comando na minha vocação script. Será que a saída comando ser executado apenas depois de concluída B.pl é ou será executado imediatamente B.pl se chama?
Penso não ser que a sua própria B.pl executado no modo de fundo (tais como a dos demónios, por exemplo), o perl processo de B.pl não vai sair antes de ser concluído e, portanto, (sistema) no seu script não irá retornar chamadora (note-se que sistema () apenas executa um perl processo da mesma forma que os outros processos). Se a saída () ocorre após o sistema (), pode assumir ele só será executado quando B.pl saídas por qualquer motivo.

Você tenta descobrir se é esse o caso?
  #3 (permalink)  
Old 02-06-2007
new2ss new2ss is offline
Usuário
  
 

Join Date: Jan 2006
Lugares: 133
Citação:
Originally Posted by cbkihong
Sim. Utilizar require ().

Penso não ser que a sua própria B.pl executado no modo de fundo (tais como a dos demónios, por exemplo), o perl processo de B.pl não vai sair antes de ser concluído e, portanto, (sistema) no seu script não irá retornar chamadora (note-se que sistema () apenas executa um perl processo da mesma forma que os outros processos). Se a saída () ocorre após o sistema (), pode assumir ele só será executado quando B.pl saídas por qualquer motivo.

Você tenta descobrir se é esse o caso?
B.pl não é um modo de fundo, o seu utilizador normal um script.

i qoute de perldoc do sistema "... faz exactamente a mesma coisa que exec LISTA, exceto que um garfo é feito primeiro, e da mãe para o filho processo aguarda processo para completar ...." Então, eu posso levá-lo de que o meu primeiro script irá esperar por B.pl para terminar antes de sair.

perldoc a entrada para exec diz ".. A função exec executa um sistema de comando e nunca mais volta -". Por isso, podemos assumir que, após ter convida B.pl, chamando o script irá sair.

A minha intenção não é de esperar que B.pl para terminar, (ou seja, corre B.pl e do chamador script própria saída), portanto, eu deveria usar exec? Qualquer chamar costas?
  #4 (permalink)  
Old 02-06-2007
karlsworld karlsworld is offline
Usuário
  
 

Join Date: Feb 2007
Posts: 6
Eu gosto de exigir quaisquer outros arquivos no início do script principal, então basta chamar a rotina nos mesmos, conforme necessário. Isso pode ou não ser a melhor maneira, mas funciona muito bem para mim. Pela maneira, se bem me lembro, creio que o arquivo que você está chamando não tem necessariamente a norma perl script cabeçalho, não tem que terminar em "PL" ou "cgi", e não precisa executável permissões.

(main_file.pl)

#! / usr / bin /perl
exigir "other_file.pl";
& do_something;
& do_something_else;
saída;

(other_file.pl)

sub do_something (
print "Content-Type: text / html \ n \ n";
print "ok";
)
sub do_something_else (
print "Content-Type: text / html \ n \ n";
print "OK novamente";
)
1; # return true



Eu não ensaio que script, mas eu sei que é real perto do que eu.
  #5 (permalink)  
Old 05-23-2009
lbailey lbailey is offline
Usuário
  
 

Join Date: May 2009
Posts: 2
Citação:
Originally Posted by karlsworld View Post
Eu não ensaio que script, mas eu sei que é real perto do que eu.
Graças karlsworld,
Corri o código e deu certo, mas eu preciso passar argumentos, e simplesmente adicionando-las (da mesma forma como você faz com uma subrotina) não funciona. Esta é a minha primeira experiência com o perl, E as barreiras são tão fútil frustrante!

Sorry - Procurei por toda parte e tentou um monte de abordagens, sem sucesso. Qualquer ajuda seria apreciada!
  #6 (permalink)  
Old 05-24-2009
curleb curleb is offline
Usuário
  
 

Join Date: Mar 2008
Localização: Aqui, na minha torre de marfim ...
Lugares: 68
Embarcarem Perl e Robert's Perl Tutorial. Livros online, ambos com uma cobertura muito profundo do tema para newbs para o idioma.
  #7 (permalink)  
Old 05-24-2009
lbailey lbailey is offline
Usuário
  
 

Join Date: May 2009
Posts: 2
Na verdade "embarcarem Perl"Não menciona sequer chamar outros perl scripts, e "Robert's Perl Tutorial "é para o Windows e que apenas menciona a fazê-lo com os módulos. No entanto, eu consegui usá-lo e karlsworld do script para juntar alguma coisa que funcione.

Também, eu esqueci de mencionar que eu não quiser usar sistema (), porque eu preciso passar vários nomes de arquivo e quero ser capaz de aceitar espaços sem a cabeça de peças que vão descobrir juntos no alvo método.

De qualquer maneira. Para quem ler este, no futuro, esta obra:

(main_file.pl)

Código:
#!/usr/bin/perl
use strict;
use warnings;
require "other_file.pl";

my $string = "Hello";
my $string2 = "Hello again";

do_something($string);
my ($s1, $s2) = do_something_else($string2);
print "Received: $s1 $s2\n";

exit;

(other_file.pl)

Código:
sub do_something($){
        my $string = $_[0];
        print "Printing: $string\n";
}

sub do_something_else($){
        my $string = $_[0];
        print "Now printing: $string\n";
        my $yyyy = 2009;
        return ($string, $yyyy);
}

1; # return true

E o resultado é o seguinte:
Impressão: Olá
Agora impressão: Olá novamente
Recebido: Olá de novo 2009
Closed Thread

Marcadores

Thread Tools Pesquisar este Thread
Pesquisar este Thread:

Pesquisa Avançada
Display Modes Esta taxa Thread
Esta taxa Thread:

Destacamento Regimento
Você não pode postar novas threads
Você não pode postar respostas
Você não pode postar anexos
Você não pode editar suas postagens

BB code é Ligado
Smilies são Ligado
[IMG] código é Ligado
Código HTML é Desligado
Trackbacks são Ligado
Pingbacks são Ligado
Refbacks são Ligado




Todos os horários são GMT -4. A hora é agora 03:47.


Powered by: vBulletinCopyright © 2000 - 2006, Jelsoft Enterprises Limited. Língua Traduções Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
O UNIX e Linux Fóruns Content Copyright © 1993-2009. Todos os Direitos Reserved.Ad Gestão por RedTyger

Content Relevant URLs por vBSEO 3.2.0