#!/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 () { print $DW $_; } close $DW; while (<$DR>) { print; } } else { if (!$DR->eof) { my $x = <$DR>; print $x; while() { 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 "*"); }