Comment puis-je retourner une valeur à partir d'un programme en Perl pour un Korn-shell script?
Je veux faire cela dans un script shell:
#!/usr/bin/ksh
PERL_PATH=/usr/local/bin/perl
RET1=$(${PERL_PATH} missing_months_wrap.pl)
echo $RET1
Comment dois-je faire?
appelant le script perl comme ci-dessus me donne une erreur:
> shell.sh
Can't return outside a subroutine at missing_months_wrap.pl line 269.
EDIT: à l'intérieur du script perl les états sont :
unless (@pm1_CS_missing_months)
{
$SETFLAG=1;
}
my @tmp_field_validation = `sqlplus -s $connstr \@DLfields_validation.sql`;
unless (@tmp_field_validation)
{
$SETFLAG=1;
}
if ($SETFLAG==1)
{
return $SETFLAG;
}
Ce n'
perl test.pl
retour? À la sortie de quelque chose de l'impression sur l'écran?OriginalL'auteur Vijay | 2010-05-10
Vous devez vous connecter pour publier un commentaire.
L'affectation à
RET1
dans votre script shell exécute la commande Perl et capture sa sortie standard. Pour faire de votre programme Perl allez le long, le changement de la condition à la fin deCours d'exécution, il produit
Une autre méthode consiste à utiliser le statut de sortie du programme en Perl. Avec
shell.sh
contenantet de changer à la dernière condition à l'
missing_months_wrap.pl
àvous obtenez le même résultat:
OriginalL'auteur Greg Bacon
Vous devez modifier votre script Perl pour qu'il affiche la valeur que vous avez besoin (stdout) et vous pouvez ensuite utiliser cette valeur dans votre script shell.
OriginalL'auteur Paul R
Le script shell peut récupérer le statut de sortie du script Perl dans le $? variable, ou à la sortie du script Perl s'il est invoqué avec backticks ou shell interne est exécuté.
Être sûr d'obtenir le $? la valeur à droite après le script Perl invokation car il peut changer.
ou
VAR=$(perl test.pl)
Avec la seconde méthode, la variable peut être une chaîne de caractères, avec la première, elle doit être une valeur entière comprise entre 0 et 255.
$()
est préférable pour des raisons de lisibilité, nestability et la facilité de citer et de s'évader.Vous avez raison, permet de compléter la réponse.
OriginalL'auteur philant