#!/usr/local/bin/perl -w use strict; my @data; my $file='data_file'; open( DATA , $file); @data=; ### already read all of $file into @data close(DATA); print @data; while (<$data>) { ### can make this 'for ( @data ) {' my @fields = split ' '; for my $row (0..$#fields) { push @{$data[$row]}, $fields[$row]; } } use Data::Dumper; print Dumper \@data;