Ваши строки журнала немного странные.Некоторые поля (Request URI и Tool) содержат пробел перед двоеточием, что является неожиданным.Я бы проверил, что ваши строки журнала действительно содержат эти неожиданные пробелы.Также немного удивительно, что номера портов появляются дважды без квалификатора Source или Destination.Опять же, проверьте ваш настоящий файл журнала.Следующий фрагмент кода работает для строки журнала, размещенной в вопросе.Поскольку имена полей не являются уникальными, предполагается, что они всегда печатаются в одном и том же порядке.
my @fields = ('Time', 'IP Address Source', 'Mac Address Source', 'Port Numbers',
'IP Address Destination', 'Mac Address Destination', 'Port Numbers', 'HTTP Host',
'Request Method', 'Request URI ', 'Tool ');
my $re = join(':\s+(.*?)\s+', @fields);
$re .= ':\s+(.*)';
warn $re;
$line = 'Time: Jan 31, 2012 19:41:17 IP Address Source: 221.255.225.143 Mac Address Source: 010912063cfc Port Numbers: 44535 IP Address Destination: 10.12.264.43 Mac Address Destination: 00f04c080788 Port Numbers: 3306 HTTP Host: example.com Request Method: GET Request URI : /index.php?page=rilis artikel=999999.9%27+union +all+select+0x31303235343830303536%2C Tool : Havij';
my @values = $line =~ /$re/;
print "values = @values\n"