use IPC::System::Simple 'capturex'; my @cmd = ('cat','fake.txt'); chomp( my @lines = capturex @cmd ); shift @lines; # header my %data; for (@lines) { my ($coid,$type,$state,$id) = split; $data{$id}{CoID} = $coid; $data{$id}{State} = $state; } use Data::Dump; dd \%data;