in reply to List form of pipe open not implemented at

It is just as the error message says. You are trying to use the list form of pipe-open:

open DH, '-|', ... # this is the list form of pipe-open

... and on Windows Perl, this is not implemented. End of the story.

As an alternative for your case, maybe you want to use the string-form of pipe open?

my $cmd = "ct-energy -s $suffix ${prefix}.ct"; open my $dh, "$cmd |" or die "Can't launch [$cmd]: $! / $?"; while( <$dh>) { ... };

Also see open and perlport.