Plain procedural programming (in the context of this module) refers to programming that only uses the basic types provided by a programming language. Such language provided types include integers, numbers in general, strings, arrays, lists and hashes.
The difficulty that a programmer may run into is that it can get difficult to supply parameters to subroutines. For example, if a procedure processes an application form, and each field is passed as a parameter, then there are as many parameters as there are fields in a form!
Tedium leads to errors. In other words, when a procedure/subroutine requires 20 parameters, then the chances of passing an argument to the wrong parameter is 20 times as likely as a procedure that only needs one parameter. This is worse for interpreted languages like PHP or Perl because there is little or no type checking. Even with type checking, parameters of the same type can still be passed incorrectly.