J'ai une application Perl qui prend de la ligne de commande une entrée comme:Comment puis-je développer une chaîne comme "1.15,16" dans une liste de nombres?
application --fields 1-6,8
Je suis tenu d'afficher les champs comme demandé par l'utilisateur sur la ligne de commande. J'ai pensé à remplacer '-' par '..' afin que je puisse les stocker en réseau, par exemple.
$str = "1..15,16" ;
@arr2 = ($str) ;
@arr = (1..15,16) ;
print "@arr\n" ;
print "@arr2\n" ;
Le problème ici est que @arr fonctionne très bien (comme il se doit), mais dans @ arr2 la chaîne entière est pas étendue comme éléments du tableau.
J'ai essayé d'utiliser des séquences d'échappement mais pas de chance.
Peut-il être fait de cette façon?
+1. "Faire les choses correctement" est toujours préférable à l'évaluation. Beaucoup moins d'effets secondaires. – jrockway
Je n'ai jamais rencontré Number :: Range avant. J'ai classé cela pour une utilisation future. Merci de m'avoir fait prendre conscience de cela! –
Si vous prenez l'entrée de l'utilisateur, votre application va exploser sur 1..1000000000, sauf si vous avez environ 8 Go de RAM. Number :: Range-> size() est inutile en ce moment pour éviter cela car il génère toute la gamme pour comprendre la taille. –