#!/usr/bin/perl use warnings; use strict; use feature qw{ say }; my $LOAD_AT_ONCE = 500; my $filename = shift; open my $IN, '<', $filename or die $!; my @part; sub out { for my $i (0 .. $#{ $part[0] }) { open my $OUT, '>>', "$$.$i" or die $!; say {$OUT} join "\n", map $_->[$i], @part; } @part = (); } while (<$IN>) { push @part, [ split ' ' ]; out() if @part == $LOAD_AT_ONCE; print STDERR "Phase 1: ", $IN->input_line_number, "\r"; } out() if @part; print STDERR "\n"; my @files = glob "$$.*"; seek $IN, 0, 0; for my $i (0 .. $#files) { print STDERR "Phase 2: $i\r"; open my $COL, '<', "$$.$i" or die $!; while (<$COL>) { chomp; last if $_ eq 'NA'; print "$_ "; } my @rest = (split ' ', <$IN>)[ 1 + $i .. $#files ]; say "@rest"; } unlink glob "$$.*"; #### my $SIZE = 1000; sub create_matrix { my ($filename) = @_; open my $OUT, '>', $filename or die $!; for my $i (1 .. $SIZE) { for my $j ( 1 .. $SIZE ) { print {$OUT} $i <= $j ? $i * $j : 'NA'; print {$OUT} ' ' unless $SIZE == $j; } print {$OUT} "\n"; } } #### ($q=q:Sq=~/;[c](.)(.)/;chr(-||-|5+lengthSq)`"S|oS2"`map{chr |+ord }map{substrSq`S_+|`|}3E|-|`7**2-3:)=~y+S|`+$1,++print+eval$q,q,a,