in reply to Re^3: Stuck with manipulating an array
in thread Stuck with manipulating an array

Ok, this is very frustrating...
I tried to use your code inside my script like this:
open IN2, $first_tmp; while(<IN2>) { if($_=~/^(chr.*?)REC:(.*)/) { $respective_chrom=$1; $all_entries=$2; @split_entries=(); @split_entries = split(/\#/, $all_entries); @split_sep_entries=(); %collapsed_loci_HoA=(); print ">".$respective_chrom."\n"; foreach $sep_entry(@split_entries) { @split_sep_entries = split(/\t/, $sep_entry); $locus_to_use = $split_sep_entries[1]; $rest_entry=$split_sep_entries[0]."\t".$split_sep_entries[ +2]."\t". $split_sep_entries[3]."\t".$split_sep_entries[ +4]."\t". $split_sep_entries[5]."\t".$split_sep_entries[ +6]."\t". $split_sep_entries[7]; push @{ $collapsed_loci_HoA{$locus_to_use} }, $rest_entry; } $start; @answer; @array_of_loci = keys %collapsed_loci_HoA; for (sort { $b <=> $a } @array_of_loci) { if( not defined $start or $_ > $start + 1000 ) { push @answer, [ $_ ]; $start = $_; } else { push @{ $answer[-1] }, $_; } } for my $i ( 0 .. $#answer ) { print "$i\t [ @{$answer[$i]} ]\n"; } print "//\n"; } } close IN2;

and, although, it does create an array with all the elements sorted, it does not create the bins as the standalone snippet does...Any ideas why?

Replies are listed 'Best First'.
Re^5: Stuck with manipulating an array
by tybalt89 (Monsignor) on Aug 28, 2017 at 14:26 UTC
    for (sort { $b <=> $a } @array_of_loci)

    should be

    for (sort { $a <=> $b } @array_of_loci)
      Yes true, I was about to write it...
      But now it does work, yet it somehow keeps all values inside the @answer and I do not know why!