#!/usr/bin/perl use warnings; use strict; use feature qw(say); { local $/ = q(); while () { my ($user) = /user: (\S*)/; my ($summary) = /summary "(.*?)"/; my ($access) = /access-level (\S*)/; my ($group) = /group (\S*)/; say join ',', map $_ // q(), $user, $summary, $access, $group; } } __DATA__ user: myus44 [up] ------------ admin-state enabled summary "Johnny Cash" access-level group-defined group mi-group [up] user: jar1543 [up] ------------ admin-state enabled summary "Lara Croft" access-level group-defined group jar-head [up] user: myprivilegeduser [up] ----------- admin-state enabled access-level privileged