#!/usr/bin/perl use strict; use warnings; my %relays; while () { chomp; my @result = split /\s/; my $id = shift @result; for my $i (0 .. $#result) { push @{$relays{$id}[$i]}, $result[$i]; } } for my $id (keys %relays) { for my $field_ref ($relays{$id}) { for my $values_ref (@$field_ref) { print "$id @$values_ref\n"; } } } __DATA__ relay01 238 933 set relay02 238 934 9876536 2345.56 relay01 238 934 reset relay02 239 935 876555 23456.88 relay01 239 999 initiate relay03 240 877 899998 87698 relay03 241 888 98989898 3.34e-10