Careful - if the last line of the file has no newline, chomp will return 0, causing grep to return 3, rather than 4, causing the while to terminate early even though the record is complete. Also, you don't need the explicit scalar - == provides scalar context for you (case in point: @a == @b checks for identical array size).
while(4 == grep { chomp($_ = <FH>); defined } my($name,$address,$phone
+,$fax)){
# Do stuff
}