<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">diff --git c/lib/App/Prove.pm w/lib/App/Prove.pm
index 344cbb5..7b6eab6 100644
--- c/lib/App/Prove.pm
+++ w/lib/App/Prove.pm
@@ -366,7 +366,7 @@ sub _get_args {
     $args{errors} = 1 if $self-&gt;parse;
 
     # defined but zero-length exec runs test files as binaries
-    $args{exec} = [ split( /\s+/, $self-&gt;exec ) ]
+    $args{exec} = [ split_shell( $self-&gt;exec ) ]
       if ( defined( $self-&gt;exec ) );
 
     $args{version} = $self-&gt;tapversion if defined( $self-&gt;tapversion );
diff --git c/lib/TAP/Parser/Utils.pm w/lib/TAP/Parser/Utils.pm
index db12bf1..76364a0 100644
--- c/lib/TAP/Parser/Utils.pm
+++ w/lib/TAP/Parser/Utils.pm
@@ -44,7 +44,8 @@ which case an empty array will be returned. That makes it possible to
 
 without worrying about whether the environment variable exists.
 
-This is used to split HARNESS_PERL_ARGS into individual switches.
+This is used to split HARNESS_PERL_ARGS into individual switches and
+to handle prove's C&lt;--exec&gt; option.
 
 =cut
 
</pre></body></html>