#!/usr/bin/perl use strict; use warnings; use Data::Dumper; my @lines; while () { my %line; ++$line{$_} for split /\s+/; push @lines, { %line }; } print Dumper \@lines; __DATA__ one two three three one two one one three