• [^] # Re: et en perl

    Posté par . En réponse au journal Esod mumixam !. Évalué à 2.

    ensuite je me demande si on peut pas de faire a coup de regex récursive ;)
    (t)ru(C) => C(r)(u)t => Curt, à rechercher du coté de la recherche des palindromes (du point de vu de la logique)

    Je vois pas trop comment on pourrait s'en sortir avec des regexps récursives, car elles servent uniquement à matcher. Peut-être en utilisant des blocs ?{...} pour insérer du code dans la regexp. Par contre, on peut s'en sortir en faisant une fonction récursive :

    #!/usr/bin/perl
    use strict;
    use warnings;
    use open qw(:std :utf8);
    sub zorglangize {
     my $text = shift;
     if ($text =~ /(\p{Alphabetic})(\p{Alphabetic}*)(\p{Alphabetic})/) {
     my ($first, $middle, $last) = (1ドル, 2ドル, 3ドル); 
     return (($first =~ /\p{upper}/) ? (uc $last) : (lc $last))
     . zorglangize($middle)
     . (($last =~ /\p{upper}/) ? (uc $first) : (lc $first));
     } else {
     return $text;
     }
    }
    while (<>) {
     s/(\p{Alphabetic}+)/zorglangize(1ドル)/xeg;
     print;
    }

    mais c'est un peu tordu... et probablement moins efficace que d'utiliser substr et des indices. Mais c'est marrant quand même :)