2017-10-06 2 views
-1

J'essaie de stocker un commentaire dans $ comment, ce qui peut être n'importe quoi. disent:

GetOptions(
'-C=s' => \$comment, 
); 

Supposons que l'utilisateur entre dans "Bonjour $$$$". Quand j'essaie d'imprimer $ comment ou de l'utiliser ailleurs, il prend le pid du processus en cours.

print "$comment\n"; 

La sortie est:

Hello 109236109236 

Est-il possible d'imprimer le contenu tel qu'il est? par exemple:

Hello $$$$ 

Répondre

5

Le problème ne Perl comme on peut le voir dans l'extrait suivant:

$foo = 'Hello$$$$'; 
print "$foo" # prints 'Hello$$$$' 

Le problème est plutôt le shell que l'utilisateur utilise. Il élargit le $$ dans l'argument de ligne de commande au pid et donne ensuite l'argument modifié à l'application:

shell$ app.pl -C Hello$$$$  # calls app.pl with HelloPIDPID 

Si vous ne voulez pas que l'utilisateur doit citer correctement l'argument

shell$ app.pl -C 'Hello$$$$' # calls app.pl with 'Hello$$$$' 

Encore une fois, rien de cela ne peut être fait en Perl puisque Perl n'obtient que l'argument déjà développé.

+0

Merci pour l'info, ça m'a beaucoup aidé. –