Il y a une façon de dire regex sauter des espaces intégrés et les commentaires, donc non seulement vous pouvez diviser Je le trouve en plusieurs lignes, mais je le commente aussi, le formate en sections, etc. Je pense que c'est «x», mais je n'ai pas de documentation à portée de main pour le moment, alors cherchez dans la page man.
Vous changeriez à quelque chose comme:
my ($foo, $bar, $etc) = $input_line =~/
^\d+: ....
(\X+)\(
\X(\d+.\d+|\d+) # numerator
\/\X(\d+.\d+|\d+) # denominator
\ (\X+)\)$/x # mind the escaped space!
Il est également possible de construire des pièces d'expression régulière séparément par le préfixe de chaîne « » et les qr combiner à l'aide de substitution variable. Quelque chose comme
my $num_re = qr/(\X+)\(\X(\d+.\d+|\d+)\/\X(\d+.\d+|\d+)/;
my ($foo, $bar, $etc) = $input_line =~ /^\d+: .... $num_re (\X+)\)$/;
Je n'ai pas fait cela depuis longtemps, donc je ne suis pas sûr de savoir si des drapeaux sont nécessaires.
* Pourquoi * voulez-vous raccourcir l'expression à * 78 * caractères? pourquoi pas 79 ou 77? – thkala
Oh, et nous pourrions peut-être vous aider davantage si nous savions ce que l'expression (que, d'ailleurs, vous n'avez pas * posté *) est censée faire. – thkala
@thkala - peut-être à cause d'un style de codage demandant aux lignes de ne pas contenir plus de 79 caractères (de préférence 78)? – eumiro