Evaluating the score based from a chess FEN string
>&lt;>, 64 57 56 53 bytes

"QRBNP"013359v
$0p4}:{:v?=1l&lt;p4+' '{-
g4v?(0:i&lt;+
n~&lt;;


(-7 bytes with some inspiration from @El'endiaStarman's answer, -3 bytes thanks to @randomra)

Explanation

The program uses the codebox as a lookup table. Out-of-range puts/gets don't work with the online interpreter, so this only works with the official Python interpreter.

The first line pushes the pieces, followed by the piece values. It also pushes an initial 0 to kick off the total for the third line.

The second line then puts the appropriate positive or negative value at the corresponding piece cell, e.g. -1 is placed at ('p', 4) and 1 is placed ('P', 4). The length of the stack is checked to make sure the loop runs 5 times.

After the loop is over, the stack consists of our single zero from the first line. For each char we perform a lookup at the corresponding cell in the table and add it to our total. By default, uninitialised cell values are 0, which is perfect for our purposes.

The last line merely prints the result.