Eureka!
$pmk = pack("H*","9051ba43660caec7a909fbbe6b91e4685f1457b5a2e23660d728
+afbd2c7abfba");
$hd = pack("H*","5061697277697365206b657920657870616e73696f6e00001dd0f
+694b0489d2477179a143fbb4333341f36e17667f88aa02c5230ab82c508cc4bd5947d
+d7e50475ad3687f2718bad169e4987c94255395e054bcaf77c8d791698bf03dc85ed3
+c90832a00");
my $digest = hmac_sha1($hd,$pmk);
print unpack("H*",$digest)."\n";
calculating these values is easy. Not sure where I was going so wrong, but the PTK outpout now matches Aircrack-NG and Cowpatty! I'll mark this as solved.
May peace be with you monks!