Why do Perl variables need to start with different characters (sigils)?
Scalar variables start with $
$
Hashes start with %
%
Not all of them do, some start with % (hashes) or with @ (arrays).
It is a design decision to mark them as variables and also denote their type.
Note that you can have both a $abc and a %abc.
$abc
%abc
Check out a tutorial on Perl variables.