I have just tested this and it worked in my lab. Here's what I did.
I have configured a simple script; start node, set node (to set Cal.PeripheralVariable1 since this is not a live test call) and a Label node.
The trick to this is to use the ValidValue function within your expression in the Label node when setting up your Dynamic label.
If you are not familiar with the ValidValue function it is a way to return a specific value and then have a 2nd value configured if the first is not valid. A lot of customers use this for MED calculations. Not to go too far off topic.. but in the case of MED, since the formula contains a 5 minute rolling value (AHTto05), in very small call centers where average call length is longer than 5 minutes it is possible for MED to have a null for AHTto05 due to the fact that AHT is calculated when a call closed event is created. Therefore, if the customer knows that this sometimes happens they can substitute a NULL or Invalid MED result with a valid one, such as 300 seconds or 5 minutes.
You would want to use the same theory when counting on a PV to be populated for you to return a label. What if it isn't for any reason? In that case you would probably want to substitute a value that can be returned that you know. This is also a good idea for troubleshooting your call routing results... if you are getting reports that calls are not routing as you expect, you can then enable RouteRequest tracing on the call router and search for your substitute value, n2 in the example.
The syntax would be as follows;
ValidValue(n1, n2) - if there is a valid value for n1 it will be returned, if there is not, n2, a constant value that you supply, will instead be returned.
In my case I just put a number after the comma, but I suggest that you use a default label. A label when returned will identify for you that the Call.PerpheralVariable1 value was not valid.
My Example : ValidValue(Call.PeripheralVariable1,121212)
My Label Node:
My Call Tracer results:
Give that a try.. lemme know if you have luck with it.