|Welcome to the Monastery|
To find the size of an array you can you can do scalar(@a) which would return 3 originally and 4 after $a was set to 4;I think you meant $a and not $a :)
I would also like to point at this node scalar vs list context, I think most Perl newcomers need to be introduces as soon as possible to those context issues,e.g.
What would happen if you assign a list value to a scalar variable?
And for this particular question the answer would be, the scalar get the size value of the list.
This is how Perl works, it's a ... rule.
I am commenting on this mainly to point out that it's not obvious why would scalar (@list) return the list size, one would expect a function like size @list. So it would be reasonable to justify and explain those issues sooner rather than later.
Most people like to learn why (the justification) things works in the way they do. Not just how (the rules).