- You skip the first element.
- You print an extra element (undef) at the end. use warnings; would have caught that.
- The use of scalar there is unnecessary.
- You really should use use strict;.
- for (my $i=0; $i<@s; $i++)
is a rather complex way of saying
for my $i (0..$#s)
I had a bug in mine too (leading space)
#!/usr/bin/perl
use strict;
use warnings;
my $str = "30 30 36 33 36 36 36 33 36 34"
." 26 24 21 17 17 23 27 27 31 31"
." 34 33 33 33 36 36 37 38 38 38"
." 38 38 35 40 34 34 34 31 37 36"
." 37 37 40 40 49 40 40 40 40 40"
." 40 40 40 33 30 30 30 30 30 42"
." 45 45 45 45 45 49 42 42";
my @str = split(/ /, $str);
my $nl = 1;
for my $i (0..$#str) {
if ($i == 0 ) { $nl = 0; }
elsif ($i % 20 == 0) { $nl = 1; print("\n"); }
else { $nl = 0; print(" "); }
print($str[$i]);
}
print("\n") if !$nl;
Tested.