5 my $path = shift @ARGV || die "usage: $0 image.pgm";
7 my $o_x = $ENV{O_X} || 0;
8 my $o_y = $ENV{O_Y} || 0;
10 open(my $in, '<', $path) || die "$path: $!";
13 die "wrong magic $magic" unless $magic =~ m/^P5/;
16 my ( $w, $h ) = split(/ /,$size);
23 seek($in, $w * $o_y, 1) if $o_y;
25 while(my $size = read($in, my $px, $w)) {
27 foreach my $x ( 0 .. $w / 2 - 1 ) {
31 if ( length($px) < $x * 2 + $o_x + 2 ) {
35 my ($a,$b) = unpack('CC', substr($px,$x * 2 + $o_x,2));
39 ( ( $b & 0xf0 ) >> 4 )