The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
    my $infile  = $self -> infile ;
    my $outfile = $self -> outfile ;

    print STDERR "infile=$infile outfile=$outfile\n" ;
    my $ifh = aio_open ($infile, IO::AIO::O_WRONLY | IO::AIO::O_TRUNC | IO::AIO::O_CREAT, 0600) or die "open $infile failed ($!)" ;
    aio_write ($ifh, undef, undef, $text, 0) ;
    aio_close ($ifh) ;

    # my $oldstderr ;
    # open($oldstderr,     ">&", \*STDERR) or die "Can't dup STDERR: $!";
    # open(STDERR, '>', $outfile)     or die "Can't redirect STDERR: $!";
    # print STDERR "start\n" ;
    # my $pid = spawnp "perl", ["perl", "-c", $infile]; 
    # open(STDERR, ">&", $oldstderr) or die "Can't dup \$oldstderr: $!";

    #my $pid = spawnp "cmd", ["cmd", '/C', "perl -c $infile 2> $outfile"]; 
    my $pid = spawnp $workspace -> perlcmd, [$workspace -> perlcmd, ]

    print STDERR "pid=$pid\n" ;

    my $w = AnyEvent->child (pid => $pid, cb => rouse_cb) ;
    my $ret = rouse_wait ;
    undef $w ;
    #Coro::AnyEvent::sleep (1) ;
    #print STDERR "wait\n" ;
    #waitpid ($pid, 0) ;
    #my $ret = $? ;
    my $rc = $ret >> 8;
    print STDERR "perl -c rc=$rc\n" ;

    #aio_slurp ($outfile, 0, 0, $errout) ;
    aio_load ($outfile, $errout) ;
    print STDERR "errout = $errout\n" ;

    #return ;

    #my ($rc, $diags) = rouse_wait ;   
    my $diags = [] ;

    print STDERR "---perl -c rc=$rc\n" ;
    
    return if ($rc == 0) ;

    my $result =
        {
        method => 'textDocument/publishDiagnostics',
        params => 
            {
            uri => $uri,
            diagnostics => $diags,
            },
        } ;

    $self -> send_notification ($result) ;
    }



    # my $cv = run_cmd [$workspace -> perlcmd, '-c'],
    #    # "<", \$text,
    #     "2>", \$errout
    #    ;
 
    # $cv->cb (sub 
    #     {
    #     shift->recv and die "perl -c failed";
 
    #     print "-------->$errout\n";
    #     });

    # return ;

AnyEvent::Util::fork_call (sub { print STDERR "open3 start c $$\n" ; IO::AIO::reinit ;

  my($wtr, $rdr, $err);

    #return ;

# use Symbol 'gensym'; $err = gensym; my $pid = open3($wtr, $rdr, $err, $workspace -> perlcmd, '-c') or die "Cannot run " . $workspace -> perlcmd ; #cede () ; print STDERR "write start pid=$pid\n" ; syswrite ($wtr, $text . "\n__END__\n") ; print STDERR "close start\n" ; close ($wtr) ; print STDERR "write done\n" ; #my $errout = unblock $err ; my @diags ; my $line ; # while ($line = $errout -> readline) while ($line = <$rdr>) { $line =~ s/\s*$// ; print STDERR $line, "\n" ; next if ($line =~ /had compilation errors/) ; my $lineno = 0 ; $lineno = $1 if ($line =~ / line (\d+),/) ; my $diag = { # range: Range; # severity?: number; # code?: number | string; # source?: string; # message: string; # relatedInformation?: DiagnosticRelatedInformation[]; range => { start => { line => $lineno-1, character => 0 }, end => { line => $lineno+0, character => 0 }}, message => $line, } ; push @diags, $diag ; }

    print STDERR "EOF\n" ;

    waitpid( $pid, 0 );
    my $rc = $? >> 8;
    print STDERR "perl -c rc=$rc\n" ;
    return ($rc, \@diags) ;
   }, rouse_cb ) ;

    my ($rc, $diags) = rouse_wait ;   
    
    print STDERR "---perl -c rc=$rc\n" ;
    
    return if ($rc == 0) ;

    my $result =
        {
        method => 'textDocument/publishDiagnostics',
        params => 
            {
            uri => $uri,
            diagnostics => $diags,
            },
        } ;

    $self -> send_notification ($result) ;
    }

1 POD Error

The following errors were encountered while parsing the POD:

Around line 231:

=pod directives shouldn't be over one line long! Ignoring all 3 lines of content