2017-10-17 3 views
-1

Je suis allé sur un morceau de code dans lequel un sous-programme prend video filename comme argument, puis en imprimant sa durée. Ici, je montre seulement l'extrait.

sub videoInfo { 
    my $file = shift; 
    $file =~ s/(\W)/\\$1/g; 
} 

Jusqu'à présent, je compris est qu'il a affaire à whitespaces mais je ne suis pas en mesure de briser le sens du code, je veux dire ce qui est $1 et comment cela va fonctionner?

Répondre

2

Il place des barres obliques inverses devant les caractères non-mots. Des choses comme "untitled file" deviennent "untitled\ file".

Comme dans la plupart des opérations d'expressions régulières $1 représente la première chose capturée avec (...) qui dans ce cas est le (\W) représentant un seul caractère non-mot.

Je pense qu'il s'agit d'une version maison inutile de quotemeta.