my ($in,$data); while( sysread(IN,$in,length($enckey)) ) { $data .= $in^$enckey; } my @recs = map{ [ split /\t/ ] }split /\n/, $data; for my $rec_ref(@recs) { printf "serv %s\nuser %s\npass %s\n", $rec_ref->[0], $rec_ref->[1], $rec_ref->[2]; # NB @$rec_ref is equiv }