in reply to creating and printing a sliding window
Close.
if($count < 5) { ... } else { print "$pos ... \n"; $count = 0; @data = (); }
but you would need to reset $largest_cons<n> too, depending on your requirements.
Some points:
You could also use $. (see perlvar) in a flip-flop (".." - see perlop):
#!/usr/bin/perl -w use strict; use warnings; my $input = shift; #open FILE, '<', "$input" or die "ERROR: Unable to open input file: $! +\n"; my @largest_cons = (0) x 6; # inhibit "uninitialized" warnings while (<DATA>) { my @data = split; # if ( 1 .. 5 ) # see update below # { $largest_cons[0] = $data[0] if $. == 1; for (1..$#data) { $largest_cons[$_] = $data[$_] if $data[$_] > $largest_cons[$_]; } if ($. == 5) { $largest_cons[0] .= '-' . $data[0]; print "@largest_cons\n"; $. = 0; @largest_cons = (0) x 6; } # } }
Note that starting with 1, you end at 1-5 .. 11-15 rather than 10-14. For that you need a row 0.
Update: on a second look at the code I've posted, the flip-flop-business doesn't make sense here... ;)
|
|---|