in reply to while statement only picks up first line

However unless the input corresponds with the first line, the correct information is not printed out in the while loop

shift is destructive on @partners. By doing the shift inside the loop, you're (probably) emptying out the array, ensuring that you'll never get a match.

Since you intend to match against any element of @partners, try replacing your test with

if ( 1 == grep {$_ eq $username} @partners ) {
and remove the line that's shifting off $item.