use File::Temp qw/tempfile/; my ($fh,$fn) = tempfile(UNLINK=>1); print $fh $output; close $fh; system('less',$fn) == 0 or die "system: \$?=$?"; #### use IPC::Run3 'run3'; run3 ['less'], \$output or die $!; die "run3: \$?=$?" if $?; #### my @cmd = ('less', '-'); die '@cmd must have more than one element' unless @cmd>1; open my $fh, '|-', @cmd or die $!; print $fh $output; close $fh or die $! ? $! : "pipe: \$?=$?";