On Tue, 11 Nov 2008, Francis Galiegue wrote: > Le Tuesday 11 November 2008 02:49:19 Tait, vous avez écrit : > > > > > + if ($c_file =~ /^To:\s*+(.+)\s*\nCc:/ism) { > > > > > > > > Greedy operators are only supported with perl 5.10 or more... I think > > > > it's a bad idea to use them... > > > > > > The problem here was that a space should follow the field, but it may > > > not. The user may unwarily backup over it. "\s*" would match this > > > case. > > > > > > But if there is a space, it is included in the "(.+)". > > > > Not in any version of Perl to which I have access. > > > > And if you see a space in (.+), your regex engine is buggy anyway. So what does this script produce on your systems? #!/usr/bin/perl -Tw --8<-- use strict; my $ws = "To: \nCc:"; $ws =~ /^To:\s*(.+)\s*\nCc:/ism; if ($1 eq ' ') { print "\$1 is equal to a space.\n"; } -->8-- On mine, it prints the message. So it seems it is matching _a_ space. This resulted in an illegal recipient field. Junio's suggestion to change this to /^To:\s*(\S.+?)\s*\nCc:/ism worked beautifully.