Le stockage de regex résultat dans une variable
Le programme ci-dessous est de réorganiser une chaîne de caractères. Pour la ligne 8, je suis en train de stocker les résultats d'une regex dans une nouvelle variable $newdate, mais quand $newdate est imprimé à la ligne 9, il affiche uniquement une 1. Comment puis-je modifier mon code pour que $newdate va stocker le $date de valeur de l'expression régulière de l'opération?
1 #!/usr/bin/perl
2
3 # This program changes the date format from mm/dd/yyyy to yyyy,mm,dd
4
5 $date = '21/11/2011';
6 print "Current: $date\n";
7
8 $newdate = $date =~ s/(..)\/(..)\/(....)/$3,$2,$1/;
9 print "New: $newdate\n";
OriginalL'auteur kurotsuki | 2011-11-21
Vous devez vous connecter pour publier un commentaire.
Vous pouvez aussi faire comme ceci :
Vous 're bienvenue 🙂
OriginalL'auteur FailedDev
Depuis Perl 5.13.2, non-destructive de substitution peuvent être spécifiés par le biais de la
s///r
modificateur donc une copie de l'après-chaîne de substitution est attribué au lieu du nombre de matchs. Il empêche également la chaîne d'origine d'être modifié, ce qui signifie que les deux fonctions ont le même comportement:De
perldoc perl5132delta
:OriginalL'auteur Zaid
La
=~
opérateur sera de retour le nombre de modifications apportées lors de la substitution, et à moins que vous êtes en train de faire à l'échelle mondiale, il retournera toujours 1 ou 0. En outre, les remplacements sont effectués en place, donc si votre but est de ne pas modifier$date
, vous ne voulez pas remplacer.Essayer:
OriginalL'auteur Wooble
Dans l'esprit de TIMTOWTDI:
Cela arrive juste à travailler parce que vous voulez l'ordre inverse des numéros. Vous pourriez aussi le faire:
Encore une autre façon:
Aussi: Pourquoi l'utilisation stricte et mises en garde?
OriginalL'auteur TLP