According to my notes;
• Theorem (Hall's Theorem) – If G is a bipartite graph, and for any ⊆ and any ⊆ , and we have || ≤ |()| and || ≤ |()| , then there is a perfect matching of G.
I have attached the work that I did using that theorem and it shows that there is a perfect matching, however my friend said that this bipartite graph actually has no perfect matching so can someone explain to me how to use halls theorem correctly?
In set A the number of neighbors is 4 and the set B there are 5 neighbors ?
EDIT: I found the following definition of a perfect matching with bipartite graphs online and it says
When there are an equal number of nodes on each side of a bipartite graph, a perfect matching is an assignment of nodes on the left to nodes on the right, in such a way that
I) each node is connected by an edge to the node it is assigned to, and
II) no two nodes on the left are assigned to the same node on the right
Does this mean that a vertex in a perfect matching on the left side can point to two vertices on the right side?

No, the graph in your picture does not have a perfect matching. See where the theorem says "for any $A\subseteq X$ and any $B\subseteq Y$"? What is $N(A)$ if $A$ is the top four vertices on the left? What is $N(B)$ if $B$ is the bottom two elements on the right? (By the way, it would be easier to write this answer if you had labeled the nodes in the diagram.)
That so-called "definition" that you found on-line is stated confusingly and does not seem to be quite right. Please give the link.