Fun With Permutations
CJam, 15 14 bytes
r~\;~\),>UXt:*
Try it online in the CJam interpreter.
How it works
r e# Read a token ("nPr") from STDIN.
~ e# Evaluate. This pushes the numbers n, Pi and r on the stack.
\; e# Discard Pi.
~ e# Take the bitwise NOT of r. Pushes -(r+1).
\) e# Increment n.
, e# Turn n+1 into [0 ... n].
> e# Keep only the last r+1 elements.
UXt e# Replace the first element with 1.
e# This avoid dealing with the egde case nP0 separately.
:* e# Compute their product.
Perl, 27 bytes
#!perl -pl61
$\*=$`-$%++for/P/..$'}{
Counting the shebang as 4, input is taken from stdin.
Sample Usage
$ echo 3P2 | perl npr.pl
6
$ echo 7P4 | perl npr.pl
840
Haskell, 71 66 bytes
p s|(u,_:x)<-span(/='P')s,(n,k)<-(read u,read x)=product[n-k+1..n]
Pretty straightforward stuff: split at the 'P' then take the product between (n-k+1) and n.
Thanks to nimi for their idea to use pattern guards rather than a where
clause, it shaved off 5 bytes.