Hello eoin, I recognised that code .. as my suggestion !
The problem is here
my ($ur,$ps) = split(/\t/, $_, 2);
which expects your password file to be tab delimited like this
username<tab>password I don't think yours is. If it is space delimited then use
my ($ur,$ps) = split(' ',$_,2);
If you have more than 2 fields then add $null1, $null2 as required.