I'm also experiencing the error
Use of uninitialized value in concatenation
Watching the errors and qospol.pl file, seems that ALL errors are regarding the lines that print the variable index value number 18, just like:
print $cbitr . "\n";
print $precbitr . "\n";
print $dropbitr . "\n";
This command, printing the variable index number 18, happens several times on qospol.pl and seems it's the one that is generating the error.
I can successfully do the snmpwalk commands and can see values .... but nothing is returned from the qospol.pl script but the 'unitialized value in concatenation' ....
I know this is an old post, but I also had this problem - fixed it by replacing  with .
explanation: if you have a look at the output of your snmpwalk, you'll see it looks like:
root@test:~# /usr/local/bin/snmpget -Os -c <your comm string> -v 2c <your ip> 184.108.40.206.220.127.116.11.18.104.22.168.1.11.691199.691201
enterprises.22.214.171.124.126.96.36.199.691199.691201 = Gauge32: 7340000
after the snmp command is run in the qospol.pl script, you'll see it performs a "=~ s/ /./g", which means substitute spaces with periods ( . ). There are only 3 spaces in the output of the snmpget command - before and after the "=" and after the "Gauge32:". The resulting string is then:
so then it considers periods ( . ) as deliminators, and  means print the 18th field, which clearly doesn't exist (hence the NaN). Counting the fields (inbetween periods ) in the above string shows that the value you are after is actually field 13
hope it helps! it did for me!
This worked for me but with a different value so it is the fix for -nan values, you will need to work out what number works for you with snmpwalk, mine was 11