Das ist richtig, im Prinzip könnte man auch ein Hash verwenden.
Aber hier geht es um OOP, du hast ein Objekt und nutzt Funktionen/Methoden um auf die Eigenschaften zu zugreifen, das nennt man
Kapselung. Anderseits kannst du mehrere Objekte mit den gleichen Eigenschaften erzeugen und einen Konstruktor verwenden um z.b. Parameter für das Objekt zu übergeben. Und um u.a. diese Konzepte der
OOP um setzen, sparst du dir einen Haufen Tipparbeit mit solchen Modulen. Ich benutze was selbstgeschriebenes, wo ich hinterher gemerkt habe, dass es
Class::Accessor entspricht.