The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl 

use strict;
use warnings;

use File::Basename;
use File::Spec::Functions;
use IPC::Open3;

use Lingua::Jspell::ConfigData;

if (grep {$_ eq "--flush"} @ARGV) {
    $|++;
    @ARGV = grep {$_ ne "--flush"} @ARGV;
}

my $encontrei_l = 0;
$encontrei_l = 1 if grep {$_ eq "-l"} @ARGV;

unshift @ARGV, "-a" if !$encontrei_l;





binmode(STDIN,":utf8");
binmode(STDOUT,":utf8");

my ($DW,$DR,$DE);
my $exe = Lingua::Jspell::ConfigData->config('jspell');

use Symbol 'gensym'; $DE = gensym;

open3($DW, $DR, $DE, $exe, "-W 0", @ARGV);

binmode($DW, ":encoding(iso-8859-1)");
binmode($DR, ":encoding(iso-8859-1)");

if ($encontrei_l) {
    while (<STDIN>) {
        print $DW $_;
    }
    close $DW;
    while (<$DR>) {
        print;
    }
}
else {
    if (!$DR->eof) {
        my $x = <$DR>;
	print $x;
	while(<STDIN>) {
	    print $DW $_;
	    print_lines($DR);
	}
    } else {
	my $x = <$DE>;
	print STDERR $x;
    }
    for ($DW, $DR, $DE) { $_ and close $_ };	
}

sub print_lines {
    my $handler = shift;
    my $l;
    do {
        $l = <$handler>;
        chomp($l);
        print "$l\n";
    } while ($l ne "" && $l ne "*");
}