One of the Perl file test operators.

(-p $file) returns true if the file exists, and it is a named pipe (i.e. not a directory, special file, named pipe, plain file or symbolic link.

As a command line option, -p behaves rather like it does in sed, which is to say it wraps your code in a loop like this :
while (<>) {
   #your code
If you don't want the "print" use -n instead.

BEGIN and END blocks may be used to do things before or after this loop (e.g. initializing variables) much like in awk.