sub area_save { my($w, $pinfo) = @_; my($x1, $x2, $y1, $y2, $a); if($pinfo->{'areaX2'} != -1) { ($x1, $x2, $y1, $y2) = @$pinfo{'areaX1', 'areaX2', 'areaY1', 'areaY2'}; # slice ! ($x1, $x2) = @$pinfo{'areaX2', 'areaX1'} if $x2 <= $x1; ($y1, $y2) = @$pinfo{'areaY2', 'areaY1'} if $y2 <= $y1; $a = $w->postscript('-x' => $x1, '-y' => $y1, -width => $x2 - $x1, -height => $y2 - $y1); } else { $a = $w->postscript; } $SIG{'PIPE'} = sub {}; open(LPR, "| $pinfo->{'prcmd'}"); print LPR $a; close(LPR); } # end area_save