Perl's data types - scalars, arrays, hashes, and so on - are far more flexible than C's, and hence have to be implemented quite carefully in terms of C equivalents. The code for handling arrays is in av.*, hashes are in hv.* and scalars are in sv.*. See also Chapter 4.