diff -Nurd -x'*~' Test-Harness-3.34.orig/lib/TAP/Parser/SourceHandler/Perl.pm Test-Harness-3.34/lib/TAP/Parser/SourceHandler/Perl.pm
--- Test-Harness-3.34.orig/lib/TAP/Parser/SourceHandler/Perl.pm	2014-11-05 18:10:54.000000000 -0500
+++ Test-Harness-3.34/lib/TAP/Parser/SourceHandler/Perl.pm	2014-11-29 15:55:25.000000000 -0500
@@ -265,7 +265,21 @@
 
    # XXX don't need to quote if we treat the parts as atoms (except maybe vms)
    #$file = qq["$file"] if ( $file =~ /\s/ ) && ( $file !~ /^".*"$/ );
-    my @command = ( $command, @{$switches}, $file, @args );
+    my @command;
+    if ($] >= 5.010 && $Config{"byteorder"} =~ /^1/) {
+        # little-endian means intel (not powerpc), for which fink has
+        # multiple single-arch distros that are seen by a single (fat)
+        # perl interp from apple for a perl version supported by fink
+        # (i.e., starting with 5.10.0). This is the logic taken from
+        # Fink::PkgVersion as of fink-0.29.13.
+        push @command, '/usr/bin/arch';
+        if ( $Config{"longsize"} == 4 ) {
+            push @command, '-i386';   # 32-bit
+        } else {
+            push @command, '-@ARCH@'; # 64-bit
+        }
+    }
+    push @command, ($command, @${switches}, $file, @args);
     return @command;
 }
 
diff -Nurd -x'*~' Test-Harness-3.34.orig/t/nofork.t Test-Harness-3.34/t/nofork.t
--- Test-Harness-3.34.orig/t/nofork.t	2014-11-05 17:55:28.000000000 -0500
+++ Test-Harness-3.34/t/nofork.t	2014-11-29 15:55:25.000000000 -0500
@@ -27,7 +27,21 @@
 }
 
 my @libs = map "-I$_", @INC;
-my @perl = ( $^X, @libs );
+my @perl;
+if ($] >= 5.010 && $Config{"byteorder"} =~ /^1/) {
+    # little-endian means intel (not powerpc), for which fink has
+    # multiple single-arch distros that are seen by a single (fat)
+    # perl interp from apple for a perl version supported by fink
+    # (i.e., starting with 5.10.0). This is the logic taken from
+    # Fink::PkgVersion as of fink-0.29.13.
+    push @perl, '/usr/bin/arch';
+    if ( $Config{"longsize"} == 4 ) {
+        push @perl, '-i386';   # 32-bit
+    } else {
+        push @perl, '-@ARCH@'; # 64-bit
+    }
+}
+push @perl, ( $^X, @libs );
 my $mod = 'TAP::Parser::Iterator::Process';
 
 {    # just check the introspective method to start...
diff -Nurd -x'*~' Test-Harness-3.34.orig/t/proverun.t Test-Harness-3.34/t/proverun.t
--- Test-Harness-3.34.orig/t/proverun.t	2014-11-05 17:58:35.000000000 -0500
+++ Test-Harness-3.34/t/proverun.t	2014-11-29 15:55:25.000000000 -0500
@@ -164,6 +164,11 @@
     # obliterate it here. Need to test that it's sane.
     for my $call (@log) {
         if ( 'HASH' eq ref $call->[2] && exists $call->[2]->{command} ) {
+            if ($call->[2]->{command}->[0] eq '/usr/bin/arch') {
+                # nuke fink single-arch wrapper to actual perl interp
+                shift @{$call->[2]->{command}}; # '/usr/bin/arch'
+                shift @{$call->[2]->{command}}; # '-i386' or '-@ARCH@'
+            }
             $call->[2]->{command}->[0] = 'PERL';
         }
     }