OK. That split just isn't going to work - because you've used single quotes, the string is used literally. As it doesn't occur in your sample text, it doesn't do anything at all.
Split 'cuts up' a string based on a field separator, which probably isn't what you want. E.g.
split ( ' ', $data );
Will give you:
$VAR1 = [
'May',
'26',
'09:33:33',
'localhost',
'archiver:',
'saving',
'ID',
'0091070818_1432647213_489715',
'took',
'180',
'msec'
];
Given your string doesn't really 'fieldify' like that properly, I'd suggest a different approach:
You need to select the things you want out of it. Assuming you're not getting some somewhat odd records mixed in:
my $data = 'May 26 09:33:33 localhost archiver: saving ID 0091070818_1432647213_489715 took 180 msec';
my ($time_str) = ( $data =~ m/^(\w+ \d+ \d{2}:\d{2}:\d{2})/ );
my ($id) = ( $data =~ m/(\d+)_/ );
my ($msec) = ( $data =~ m/(\d+) msec/ );
print "$time_str, $id, $msec,\n";
Note - you can combine your regex patterns (as some of the examples indicate). I've done it this way hopefully to simplify and clarify what's happening. The regular expression match is applied to $data (because of =~). The 'matching' elements in brackets () are then extracted and 'returned' to be inserted into the variable on the lefthand side.
(Note - you need to have the 'my ( $msec)' in brackets, because that way the value is used, rather than the result of the test (true/false))