This is because perl doesn't know where your variablename ends and guesses the :: are part of it.
and it should work.
The {}'s are to explicitly tell perl which bit of the characters following $ are part of the variablename.
Perls package system allows you to access, from your main program, global variables defined in such a package using $package::variablename.