#!/usr/bin/env perl -l use strict; use warnings; my @strings = ( '8 changes by 4 users: user1 user2 user3 user4', '1 change by user1', ); for (@strings) { my ($changes, $users, @user_list); if (/:/) { /^(\d+)\D+(\d+)[^:]+:\s+(.+)/; $changes = $1; $users = $2; @user_list = split /\s+/ => $3; } else { /^(\d+) change by (\w+)/; $changes = $1; $users = 1; @user_list = ($2); } print "changes=$changes; users=$users; user_list: @user_list"; }