in reply to Pure Ftpd log regex

The problematic part in the format is the path, which can contain any characters, unescaped. But we know that the beginning and the end of the string easily parsed, fixed formats, so we can take advantage of that. Something along these lines should give you the desired results:

my ($month, $day, $time, $host, $process, $user, $level, $path, $bytes +, $speed); ($month, $day, $time, $host, $process, $user, $level, $path) = split / + /, $_, 8; $path =~ s/ downloaded \((\d+) bytes, ([\d.]+)KB/sec\)\z// and ($bytes + = $1, $speed = $2);

Beware that this will not deal gracefully with variations in the data format; depending on how far out of its way ProFTPd goes to make its logfiles hard to parse, it may require more or less extensive adjustments.

Makeshifts last the longest.