Le comportement que tu constates est tout à fait normal.
En effet, le contenu d'une chaîne entre apostrophes (car. ' ) n'est pas interprété par le PERL, au contraire du contenu d'une chaîne entre guillemets (car. " ).
Ainsi :
1 2 3 4 5 6 7 8 9 10 11
| #!/usr/bin/perl -w
use strict;
my $chaine = "toto";
print '$chaine';
print "\n";
print "$chaine";
print "\n"; |
Affichera :
1 2 3 4
| $ perl test.pl
$chaine
toto
$ |
Pour le problème que tu rencontres, tu as dans ta chaîne d'exécution un dollar (car. $) qui ne doit pas être interprété par le PERL (celui de "$UXEXE"), et tes variables $Tab[0] et $Tab[1] qui, elles, doivent l'être.
Tu as plusieurs solutions pour parvenir à tes fins.
Soit tu demandes à PERL d'interpréter le contenu de ta chaîne en l'entourant de guillemets, et tu "échappes" le caractère dollar que tu ne veux pas voir interprété par PERL, à l'aide du caractère spécial backslash (car. \ ) :
$command01="\$UXEXE/uxlst upr upr=$Tab[0] upr=$Tab[1]";
Soit tu construis ta chaîne $command01 en concatenant tes variables :
$command01 = '$UXEXE/uxlst upr upr=' . $Tab[0] . ' upr=' . $Tab[1];
Partager