The conditional test of a statement(while, for,if) needs to be partitioned within parenthesis simply because the parser needs to know where the test statement begins and ends. It usually wouldn't matter since most of the time the openning bracket { marks the end of the test, but this isn't always true. For instance you can insert another statement that requires brackets within the conditional test:
while( sub{return $foo} ) {...code...}
Perl is wildly free form, but you've got to have some syntactic rules.