2013-01-10 3 views
2

J'essaie d'obtenir que Perl split travaille pendant plus de 2 heures. Je ne vois pas d'erreur. Peut-être que d'autres yeux peuvent le regarder et voir le problème. Je suis sûr que c'est un idiot:Pourquoi Split ne renvoie rien?

@versionsplit=split('.',"15.0.3"); 

print $versionsplit[0]; 
print $versionsplit[1]; 
print $versionsplit[2]; 

Je viens d'obtenir un tableau vide. Une idée pourquoi?

Répondre

14

Vous devez:

@versionsplit=split(/\./,"15.0.3"); 

Le premier argument à split est une expression régulière, pas une chaîne. Et . est le symbole regex qui signifie «correspondre à n'importe quel caractère». Donc, tous les caractères de votre chaîne d'entrée étaient traités comme des séparateurs, et split ne trouvait rien entre eux à retourner. Le "." représente n'importe quel caractère. Vous devez lui échapper pour la fonction de séparation à reconnaître en tant que séparateur de champ.

1

changer votre ligne

@versionsplit=split('\.',"15.0.3"); 
+0

Je trouve que mettre le premier argument de 'split' dans un opérateur de correspondance (' '//) renforce le fait qu'il est interprété comme une expression régulière. –