Thiago Monteiro Postado Dezembro 31, 2010 Denunciar Share Postado Dezembro 31, 2010 (editado) Saudação a todos.Estou tentando passar um array para um script perl.pagina php<?$array = array(1, 2, 3, 4, 5);passthru("some_script.pl $array");?>------------------------------------------------------------script perlprint "@ARGV";------------------------------------------------------------------------O script deveria exibir os numeros do array que foi passado como argumento.no lugar da resposta esperada que seria a sequencia 12345esta sendo exibido a palavra "Array"--------------------------------------------------------------------------------------------------------------Realizei outro teste, criei um vetor e passei cada uma das posiçoes do vetor como argumentos separados<?php$x[]=1;$x[]=2;$x[]=3;$x[]=4;passthru("some_script.pl ".$x[1]." ".$x[2]." ".$x[3]." ".$x[4]."");?>nesse caso o script funcionou perfeitamente consegui acessar cada um dos valores.percebi entaum que o array que estava sendo enviado para o script estava sendo armazenado com um indice do array @ARGV.meu vetor gerado na pagina php esta sendo armazenado na posiçao zero da $ARGV[0]tentei acessar os valores da seguinte formaprint @ARGV[0]["posição"];mas não funcionou.se alguém puder ajudar, obrigado. Editado Dezembro 31, 2010 por Thiago Monteiro Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Stoma Postado Dezembro 31, 2010 Denunciar Share Postado Dezembro 31, 2010 (editado) Fiz um exemplo para você visualizar, adapte-o da forma que precisar:teste.pl#!/usr/bin/perl print "Imprimindo...\n\n"; print "@ARGV", "\n"; print @ARGV[0], "\n"; print @ARGV[1]; teste.php <?php // Habilita mensagens de erros ini_set('display_errors', 1); error_reporting(E_ALL); // Declaração de variáveis $nomes = Array('Carlos', 'Renato', 'João'); // Junta todos os valores do array $nomes em uma string (cada valor separado por um espaço) $parametros = join(' ', $nomes); // Inicia captura do retorno do script perl (buffer) ob_start(); // Executa script perl passando os nomes como parâmetros passthru("perl teste.pl $parametros"); // Recebe o retorno do script $retorno = ob_get_clean(); echo nl2br($retorno); ?> Editado Dezembro 31, 2010 por Stoma Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Thiago Monteiro
Saudação a todos.
Estou tentando passar um array para um script perl.
pagina php
<?
$array = array(1, 2, 3, 4, 5);
passthru("some_script.pl $array");
?>
------------------------------------------------------------
script perl
print "@ARGV";
------------------------------------------------------------------------
O script deveria exibir os numeros do array que foi passado como argumento.
no lugar da resposta esperada que seria a sequencia 12345
esta sendo exibido a palavra "Array"
--------------------------------------------------------------------------------------------------------------
Realizei outro teste, criei um vetor e passei cada uma das posiçoes do vetor como argumentos separados
<?php
$x[]=1;
$x[]=2;
$x[]=3;
$x[]=4;
passthru("some_script.pl ".$x[1]." ".$x[2]." ".$x[3]." ".$x[4]."");
?>
nesse caso o script funcionou perfeitamente consegui acessar cada um dos valores.
percebi entaum que o array que estava sendo enviado para o script estava sendo armazenado com um indice do array @ARGV.
meu vetor gerado na pagina php esta sendo armazenado na posiçao zero da $ARGV[0]
tentei acessar os valores da seguinte forma
print @ARGV[0]["posição"];
mas não funcionou.
se alguém puder ajudar, obrigado.
Editado por Thiago MonteiroLink para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.