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.